1

私は最初の文字が数字であるかどうかを確認するためにmysqlスクリプトを書き込もうとしています、これは私がこれまでに行ったことです

select CASE WHEN user_id REGEXP '[0-9]+' then 1 else 0 end as user_id  from table

すべてのデータを1として返します...列はvarcharです。このようなuser_id1234またはこれUSER-484または`ADMIN-464567'が可能になりますか?

4

3 に答える 3

1

これを試して、開始文字/数字が数字かどうかを確認してください。

select CASE WHEN user_id
REGEXP '^[0-9]+' 
then 1 else 0 end as user_id
from table;

また

select CASE WHEN user_id
REGEXP '^\d+' 
then 1 else 0 end as user_id
from table;

クエリの配置について疑問に思っています。こうあるべきだと思ったのですが、

select user_id
from table
where REGEXP '^\d+' ;

しかし、あなたのものは実際には正しいregex. :)

* SQLFIDDEL デモ

于 2013-01-29T18:37:29.867 に答える
1

代わりに user_id を表示しますか? 次に、正規表現をWHERE句に入れます

select user_id from table
where
user_id REGEXP '^[0-9]+'

^また、「行の先頭」を意味するa がありません

于 2013-01-29T18:37:37.433 に答える
0

[0-9]の前に^がないため、フィールド内の任意の場所の数値と一致します。^ [0-9]を指定すると、数字で始まる必要があることを意味します。したがって、「^[0-9]」を使用してみてください

于 2013-01-30T04:45:40.500 に答える