web-dev-qa-db-ja.com

OracleSQL-フィールドで特殊な数字以外の文字を検索する

Where句に数字以外のものが含まれているデータを特定するにはどうすればよいですか?

6
Oliver
SELECT *
  FROM <table>
 WHERE REGEXP_LIKE(<column>, '[^[:digit:]]');

それが役に立てば幸い...

14
Ollie

次のように、TRANSLATE関数を使用してこれを行うこともできます。

_SELECT *
  FROM A_TABLE a
  WHERE LENGTH(TRANSLATE(a.FIELD, 'x0123456789', 'x')) IS NOT NULL
_

フィールドに数字のみが含まれている場合、式LENGTH(TRANSLATE(a.FIELD, 'x0123456789', 'x'))はNULLを返します。数字以外の文字が存在する場合は、数字以外の文字の数が返されます。

共有してお楽しみください。

これを試して

SELECT *
FROM table
WHERE regexp_like(column_name,'[^0-9]+');`

これにより、列に数字以外の文字が含まれるすべての行が選択されます。

詳細については、これを確認してください ページ

2
Sushant Butta

またはこれ

select * from <YOUR_TABLE>
where LENGTH(REPLACE(TRANSLATE(<YOUR_TABLE.your_column_name>,
                               ’0123456789′, ‘@@@@@@@@@@’), ‘@’, NULL)) > 0;
2
ALZ

完璧ではありませんが(「#」、「@」などの文字は考慮されていません)、迅速で汚い解決策は次のとおりです。

SELECT * FROM <YOUR_TABLE>
WHERE UPPER(<YOUR_TABLE.your_column_name>) = LOWER(<YOUR_TABLE.your_column_name>) 
1
aiGuru