2

古いDrupal4.7コメントテーブルの「thread」列はvarchar(255)であり、Wordpressのwp_commentsテーブルの「comment_parent」列で機能するようにbigint(20)に変換する必要があります。

私はこれまでに見たさまざまなCastおよびConvertコマンドを試しましたが、常に構文エラーが発生します。

4

3 に答える 3

2

これは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

于 2012-11-27T23:45:02.110 に答える
1

MySQL用に提供した2番目のコードセットを実行したとき、その列はBigIntに変換されませんでした。colasBigIntとcolasVarCharを並べて比較しました。例外なく、何千もの行について、colasVarChar値に関係なく、すべてのcolasBigIntはNullとして読み取られます。

于 2012-12-03T04:34:07.377 に答える
0

発生している構文エラーは何ですか?どのデータベースを使用していますか?

あなたが提供できる情報が多ければ多いほど、誰かがあなたを助けることができる可能性が高くなります。

于 2012-11-27T23:38:07.820 に答える