数字のみを含む列(let C)があるテーブル(let T)があります。私は123123,111111,112113,231213など1,2,3の組み合わせのみのselectを使用して数値を取得したいと思います。唯一の標準SQLとどれを使用していますSQL - 特定の数字の組み合わせのみが含まれています
0
A
答えて
4
何かがすべてのRDBMSで動作します:
select c from t
where c rlike '^[123]+$'
オラクル:Postgresのように、正規表現をサポートしているものについては
select c from t
where replace(replace(replace(c, '1', ''), '2', ''), '3', '') = ''
and length(c) > 0
select c from t
where regexp_like(c,'^[123]+$');
0
標準のSQLソリューションがOracleでは正しく機能しない可能性があることを指摘しておきます。このようなテーブルで
:
create table t(c) as (
select '1233' from dual union all
select '1XX3' from dual union all
select 'XX' from dual union all
select '' from dual
)
標準的なアプローチができます:
SQL> select c from t
2 where replace(replace(replace(c, '1', ''), '2', ''), '3', '') = ''
3 and c <> '';
no rows selected
理由は、Oracleは空の文字列を処理する方法にある:シンプルで
SQL> select c,
2 case when replace(replace(replace(c, '1', ''), '2', ''), '3', '') = '' and c <> '' then 'MATCH'
3 else 'NO MATCH'
4 end as checkMatch
5 from t;
C CHECKMAT
---- --------
1233 NO MATCH
1XX3 NO MATCH
XX NO MATCH
NO MATCH
例:
オラクルで、チェックがNULL
に対して次のようになります。
SQL> select c,
2 case when replace(replace(replace(c, '1', ''), '2', ''), '3', '') is null and c is not null then 'MATCH'
3 else 'NO MATCH'
4 end as checkMatch
5 from t;
C CHECKMAT
---- --------
1233 MATCH
1XX3 NO MATCH
XX NO MATCH
NO MATCH
だから、正規表現のないOracleソリューションは次のようになります。
SQL> select c from t
2 where replace(replace(replace(c, '1', ''), '2', ''), '3', '') is null
3 and c is not null;
C
----
1233
関連する問題
- 1. 定数の組み合わせの数
- 2. ユニークな数字のセット。任意の組み合わせの合計がその組み合わせで選択された数字を示します。
- 3. SQLフィルタの列の組み合わせ
- 4. Python itertoolsの組み合わせの組み合わせ
- 5. 特定の数の繰り返しを伴わない組み合わせ
- 6. 組み合わされた組み合わせが固まった
- 7. 特定のマーク以外のマークbeetwenワードの組み合わせの組み合わせ
- 8. SQLサーバーhieracyボトムトップの組み合わせ
- 9. SQLのユニークな組み合わせ
- 10. データウェアハウス:冗長な組み合わせの組み合わせ
- 11. 合計でSQLの複数の列を組み合わせる
- 12. 組み合わせ変数
- 13. フィルター文字の組み合わせ
- 14. (文字列の組み合わせ)
- 15. 文字列の組み合わせ
- 16. 整数の組み合わせをこれらの組み合わせの合計のリストに変換する
- 17. 列の組み合わせの組み合わせデータフレームの行ではない
- 18. 特定の値の組み合わせを除外する句
- 19. 文字の組み合わせの検出、角括弧の間の数字の特殊文字の組み合わせ
- 20. Return英数字 - 関数の一部を組み合わせて返します
- 21. 隣り合わせのSQLペアを組み合わせる
- 22. 数字の組み合わせの合計
- 23. Pythonの限定組み合わせ
- 24. Linqクエリの特定の結果を組み合わせる
- 25. 特定の値の組み合わせを見つける
- 26. 数値の組み合わせが一義になります
- 27. AppVeyorでのPythonとSQL Serverの複数の組み合わせ
- 28. の組み合わせR
- 29. ワイアードの組み合わせ
- 30. Pythonの組み合わせ
OP *は* Oracleを使用しています。チャンスは何ですか? :D – GurV
標準的なSQLはnullの問題のためにOracleで動作しないと私は信じています – Aleksej
@alekそれは動作します。カラムがnullの場合、置換の結果はnullになります。* trueではない* – Bohemian