古いDrupal4.7コメントテーブルの「thread」列はvarchar(255)であり、Wordpressのwp_commentsテーブルの「comment_parent」列で機能するようにbigint(20)に変換する必要があります。
私はこれまでに見たさまざまなCastおよびConvertコマンドを試しましたが、常に構文エラーが発生します。
これはSQLServerで機能します:
create table Comments
(
[thread] nvarchar(255)
)
insert comments
select '1'
union select '2'
union select '3'
union select '4'
union select '5'
union select 'x'
select
case
when ISNUMERIC([thread]) > 0
then CAST([thread] as bigint)
else
null
end colAsBigInt
, [thread] colAsNvarChar
from comments
http://sqlfiddle.com/#!6/337eb/1
MySQLの場合:
create table if not exists Comments
(
thread varchar(255) character set UTF8 not null
);
insert comments(thread) values ('1');
insert comments(thread) values ('2');
insert comments(thread) values ('3');
insert comments(thread) values ('4');
insert comments(thread) values ('5');
insert comments(thread) values ('6.1');
insert comments(thread) values ('x');
select
case
when thread REGEXP ('^(-|\\+)?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$')
then cast(thread as signed)
else
null
end colAsBigInt
, thread colAsVarChar
from comments
--regex trick from here: http://forums.mysql.com/read.php?60,1907,241284#msg-241284
--without the regex you'll get 0s instead of nulls for invalid values
--MySQL's cast only works on certain data types, given here http://www.roseindia.net/sql/mysql-example/mysql-cast.shtml
実行可能なMySQLサンプルはこちら:http ://sqlfiddle.com/#!2 / 6d848 / 9
MySQL用に提供した2番目のコードセットを実行したとき、その列はBigIntに変換されませんでした。colasBigIntとcolasVarCharを並べて比較しました。例外なく、何千もの行について、colasVarChar値に関係なく、すべてのcolasBigIntはNullとして読み取られます。
発生している構文エラーは何ですか?どのデータベースを使用していますか?
あなたが提供できる情報が多ければ多いほど、誰かがあなたを助けることができる可能性が高くなります。