有一個表(讓T)與列(讓C)只包含數字。我希望使用select來檢索數字,它們只是例如123123,111111,112113,231213等的組合。請幫助。SQL - 只包含特定數字的組合
0
A
回答
4
的東西,只有使用標準的SQL,並且將在所有RDBMS工作:
select c from t
where replace(replace(replace(c, '1', ''), '2', ''), '3', '') = ''
and length(c) > 0
對於那些支持正則表達式,如Postgres的:
select c from t
where c rlike '^[123]+$'
甲骨文:
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
在簡單例如:
SQL> select case when '' = '' then 'true' else 'false' end
2 from dual;
CASEW
-----
false
在Oracle中,檢查應針對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. SQL:如何只選擇不包含特定值的組?
- 3. 從包含特定字符串的數組創建數組
- 4. SQL字符串只包含
- 5. Flex:強制一個數組只包含一個特定的類?
- 6. Spring Boot組件掃描只包含特定的包
- 7. 檢查字符數組只包含數字/數字
- 8. 特定的字段不應只包含數值
- 9. 如何確定2D數組是否包含特定數字?
- 10. 爆炸數組值只有在包含特定符號
- 11. 濾波器組是完全包含的值的特定組合
- 12. 排序數組包含特定的字符數
- 13. 數組是否包含特定值
- 14. 只包含特定的提交請求
- 15. 在我的數組中搜索包含特定字符的值
- 16. MongoDB:如何過濾只包含特定字符的字符串?
- 17. SQL - 如果過濾器行數組包含特定項目
- 18. 選擇數據庫只包含特定的表
- 19. preg_replace()數組刪除包含空格的特定字符串
- 20. 檢查數組是否包含特定的字符串
- 21. 更改所有包含特定字符串的數組元素
- 22. Mongoose查詢返回不包含特定字段的數組?
- 23. 合併包含數組
- 24. 如何只顯示數組中包含的特定數量的項目?
- 25. 包含給定字符(SQL)
- 26. 確定的字節數組包含在一個特定的順序字節
- 27. CSS選擇包含特定類只
- 28. 只包含特定字符串的文件的grep部分
- 29. 確定包含特定字符的CTLine
- 30. 如何制定包含數組的複合類型的數組字面量?
的OP * *是使用Oracle。有什麼機會? :D – GurV
我相信標準的SQL無法在Oracle中工作,由於null問題 – Aleksej
@alek它將工作。如果該列爲空,則替換的結果將爲空,這將*不*爲「真」 – Bohemian