where句に数字以外のものが含まれているデータを特定するにはどうすればよいですか?
質問する
77734 次
6 に答える
14
SELECT *
FROM <table>
WHERE REGEXP_LIKE(<column>, '[^[:digit:]]');
それが役に立てば幸い...
于 2012-06-27T10:54:35.353 に答える
5
次のように、TRANSLATE関数を使用してこれを行うこともできます。
SELECT *
FROM A_TABLE a
WHERE LENGTH(TRANSLATE(a.FIELD, 'x0123456789', 'x')) IS NOT NULL
フィールドに数字のみが含まれている場合、式LENGTH(TRANSLATE(a.FIELD, 'x0123456789', 'x'))
はNULLを返します。非数字が存在する場合は、非数字の数が返されます。
共有してお楽しみください。
于 2012-06-27T11:03:37.227 に答える
3
これを試して
SELECT *
FROM table
WHERE regexp_like(column_name,'[^0-9]+');`
これにより、列に数字以外の文字が含まれるすべての行が選択されます。
詳細については、このページを確認してください。
于 2013-01-01T14:03:14.573 に答える
2
またはこれ
select * from <YOUR_TABLE>
where LENGTH(REPLACE(TRANSLATE(<YOUR_TABLE.your_column_name>,
’0123456789′, ‘@@@@@@@@@@’), ‘@’, NULL)) > 0;
于 2012-06-27T11:03:58.810 に答える
2
完璧ではありませんが(「#」、「@」などの文字は考慮されていません)、迅速で汚い解決策は次のとおりです。
SELECT * FROM <YOUR_TABLE>
WHERE UPPER(<YOUR_TABLE.your_column_name>) = LOWER(<YOUR_TABLE.your_column_name>)
于 2012-07-11T17:05:28.857 に答える
0
Translateを使用して、数字以外の文字を含む値をフィルターで除外し、列で並べ替えることができます。
select * from (
select case WHEN trn > 0 then NULL else fld1 end New_column, fld1,trn FROM
(
SELECT '123ab' fld1, LENGTH(TRIM(TRANSLATE('123ab', ' +-.0123456789',' '))) trn FROM dual UNION ALL
SELECT 'a123b', LENGTH(TRIM(TRANSLATE('a123b', ' +-.0123456789',' '))) FROM dual UNION ALL
SELECT '1256.54', LENGTH(TRIM(TRANSLATE('1256.54', ' +-.0123456789',' '))) FROM dual UNION ALL
SELECT '4567899', LENGTH(TRIM(TRANSLATE('4567899', ' +-.0123456789',' '))) FROM dual UNION ALL
SELECT '-56',LENGTH(TRIM(TRANSLATE ('-56', ' +-.0123456789',' '))) FROM dual
)
)order by new_column
于 2020-11-19T21:37:01.367 に答える