Sql-Server-2012

如何從sql表中過濾數據?

  • August 2, 2022

我有一張這樣的桌子。

現在我需要使用“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 |
+-------+

引用自:https://dba.stackexchange.com/questions/315121