我對SQL沒有太多專業知識。我想用下面的標準過濾表格中的記錄。用於過濾部分值的記錄的SQL相同
我想分離出下面例子中的記錄,結果顯示爲「KLMNP03」和「UVXYZ03」。 有與去年字符爲03和04類似的記錄,但我想只篩選出只有03這些記錄在最後
例如:
col1
---------
ABCDE03
ABCDE04
KLMNP03
LMNOP03
LMNOP04
UVXYZ03
我對SQL沒有太多專業知識。我想用下面的標準過濾表格中的記錄。用於過濾部分值的記錄的SQL相同
我想分離出下面例子中的記錄,結果顯示爲「KLMNP03」和「UVXYZ03」。 有與去年字符爲03和04類似的記錄,但我想只篩選出只有03這些記錄在最後
例如:
col1
---------
ABCDE03
ABCDE04
KLMNP03
LMNOP03
LMNOP04
UVXYZ03
我不知道你有什麼用情況是,但這是相當低效的。最好使用整列。在任何情況下,要做你所要求的:
SELECT *
FROM yourTable
WHERE col1 NOT LIKE ('%03')
這將返回沒有03在最後的一切。
%是一個通配符字符,並且表示正常字符之前的任意數量的字符。你可以用_字符做一些類似的事情,它代表一個隨機字符。
至少在SQLServer中。如果你想只用03在最後的結果可能是在其他RDBMS
感謝您的迴應LordBaconPants,我只想列出那些有03和沒有等效04記錄與前5個字符相同的記錄。 – better
對不起,我想我沒有正確地構思我的問題。
我想列出那些在表格中末尾有'03'且有'04'並行記錄(在同一列)的記錄。
試試這個:
WITH cte AS(
SELECT col, 1 AS r FROM #tbl
),
cte2 AS(
SELECT CASE
WHEN (LEAD(col) OVER (ORDER BY r) NOT LIKE '%04' OR LEAD(col) OVER (ORDER BY r) IS NULL)AND col LIKE '%03'
THEN col
ELSE
NULL
END AS col
FROM cte t
)
SELECT * FROM cte2 WHERE col IS NOT NULL
替換#tbl
您的表名和col
你的列名。
偉大的工作,它的工作。 –
但是你不想要ABCDE03,也以03結尾? – jarlh