例如我有一個表稱爲X和與柱的裏面Y.SQL字符計數
Y具有500000個值等
190|12131|23|123|0|0|0|0|112
220|234|23|111|0|1|0|1|769
中的每個值
有8 |
但在某些價值觀有錯誤,而不是8 |
11|0000020|12|14 -----3 |
234|23|000|1|2 ------4 |
如何列出小於8的值?|
我需要使用函數嗎?如果是這樣,我如何以及如何調用該功能。我從來沒有在SQL中使用函數。
例如我有一個表稱爲X和與柱的裏面Y.SQL字符計數
Y具有500000個值等
190|12131|23|123|0|0|0|0|112
220|234|23|111|0|1|0|1|769
中的每個值
有8 |
但在某些價值觀有錯誤,而不是8 |
11|0000020|12|14 -----3 |
234|23|000|1|2 ------4 |
如何列出小於8的值?|
我需要使用函數嗎?如果是這樣,我如何以及如何調用該功能。我從來沒有在SQL中使用函數。
假設最大8 |
不優雅,也不sargible
Select *
from X
Where Y not like '%|%|%|%|%|%|%|%|%'
而不是計數|
的發生,你可以比較字符串字符串的長度沒有|
:
select *
from X
where length(Y) <> (length(replace(Y, '|', '')) + 8)
如果沒有把握這比約翰的答案快。
Plus1 - 我的拳頭也是這麼想的,你們允許+/- 8。只是不確定哪個dbms。 –
查找字符串的長度,然後從中減去長度減去所有出現的|使用替換爲空集''。這會給你一個數字。如果這個數字少於8,你就知道這是你感興趣的一個。這也可以讓\你找到大於8的值,因爲你可以說這個值是<> 8。由於這些函數因數據庫而異,所以你需要指定使用的數據庫。 – xQbert
你正在使用哪些DBMS? Postgres的?甲骨文? –
我使用ms-sql。謝謝 – Rengar