0
我有下列值SQL列正則表達式匹配在SQL列下列輸入
ReportID
--------
19
19,20,21
20,19,21
20,21,19
119,21
1191,21
我需要匹配其具有19的值的行(即拒絕最後兩行)
有沒有更好的方法來做到這一點比下面使用的查詢? (使用正則表達式組合)
我的查詢:
SELECT *
FROM [StoreBI_Validation].[dbo].[PortalNotifications]
WHERE ReportID like '%,19,%'
or ReportID like '19'
or ReportID like '19,%'
or ReportID like '%,19'
正確的解決方案是**不**將逗號分隔值存儲在列中。如果你正確地規範你的數據你不會有這個問題。一個快速的解決方法是存儲前導和尾隨逗號,例如',20,19,21,'那麼你使用'%,19,%'已經足夠了 –
如果你規範化數據,你不僅不會遇到這個問題,而且你的查詢可以更快地工作,因爲你可以使用索引在reportID列上。沒有辦法在當前查詢中使用索引。 –