在逗號分隔的 SQL Server 欄位中尋找特定值
使用 SQL Server 2008,您可能需要尋找包含逗號分隔值的欄位中特定值所在的資料列。 挑戰在於將該值定位在字串中的任何位置,而不僅僅是精確的字串匹配。
讓我們來看看這個問題:
範例表:
<code class="language-sql"> CREATE TABLE DelimitedValues (id INT, ColumnName VARCHAR(100)); INSERT INTO DelimitedValues VALUES (1, 'Cat,Dog,Sparrow,Trout,Cow,Seahorse'), (2, 'Mouse');</code>
目標: 辨識 ColumnName
包含特定值(如「貓」或「羊」)的行。
像IN
這樣的標準方法是不夠的,因為它們不處理嵌入在逗號分隔清單中的值。需要更複雜的方法。
一個強大的解決方案使用字串連接和 LIKE
運算子:
<code class="language-sql">SELECT id FROM DelimitedValues WHERE (',' + RTRIM(ColumnName) + ',') LIKE '%,' + @search + ',%'</code>
此技術可確保搜尋值 (@search) 以逗號括起來,無論其在清單中的位置為何,都可以進行偵測。 例如:
ColumnName
持有「貓、狗、麻雀、鱒魚、牛、海馬」@search
是「貓」此方法可靠地處理所有情況:清單開頭、中間或末尾的值以及單值條目。
以上是如何在 SQL Server 中有效率地搜尋逗號分隔字串中的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!