Sql-Server-2012
如何從sql表中過濾數據?
我有一張這樣的桌子。
現在我需要使用“HELPER”這個詞來過濾所有的助手。如何獲取我的數據?
謝謝
您可以使用
LIKE
運算符來獲得預期的結果:SELECT epfno, designation FROM TableName WHERE designation LIKE '%HELPER%'
如果您需要結果以
HELPER
然後嘗試LIKE '%HELPER'
,如果您需要結果以
HELPER
然後嘗試LIKE 'HELPER%'
您需要重新考慮您的表結構。
您在這裡所擁有的內容打破了最基本的數據規範化規則,即您應該在任何一個欄位中只有一個值。在這裡,您在一個欄位中有多個值(例如“ABC”、“HELPER”、“XYZ”和“NEW”),這是一個問題。
您在此欄位上執行的任何搜尋都可能使用表掃描,因為它必須讀取每一行才能找到您想要在欄位值中某處“隱藏”的值。
您需要將這些值分解到一個新表中,每個值一行:
+-------+-------------+ | epfno | designation | +-------+-------------+ | 10 | HELPER | | 10 | BELT | | 11 | CANTEEN | | 11 | HELPER | | 12 | ABC | | 12 | HELPER | | 12 | XYZ | | 12 | NEW | | 13 | XYZ | | 13 | HELPER | | 13 | NEW | +-------+-------------+
有了這個表(和一些合適的索引),找到那些“幫助者”本身就變得很簡單(而且數據庫處理效率要高得多):
select efpno from TableName where designation = 'HELPER' order by 1 ; +-------+ | epfno | +-------+ | 10 | | 11 | | 12 | | 13 | +-------+