簡體   English   中英

SQL Server:如何編寫SQL Select查詢以從包含定界數據的列中搜索數據?

[英]SQL Server : how to write a SQL Select query to search a data from a column contains delimited data?

SELECT * FROM (
    SELECT ID, 
        CAST('EDIT' AS NVARCHAR(MAX)) AS 'test',
        CAST([dbo].[SC_GetVersionedFieldValue](ID, '{8DBF084C-E575-4739-B37A-F732F72CFF69}') AS NVARCHAR(MAX)) AS 'City',
        CAST([dbo].[SC_GetVersionedFieldValue](ID, '{32ED6082-1145-4331-9D29-F47E19090A0A}') AS NVARCHAR(MAX)) AS 'Sectors' 
    FROM [dbo].[Items] WHERE [TemplateID] = '{000C7660-E35B-4734-B1DA-A42A79A7B827}') 
    mytable 
WHERE [City] like 'l%' 
OR [Sectors] LIKE '%{20090D52-4C76-4C93-A249-F6E0883F4663}%' 
OR [Sectors] LIKE '%{FAE9FCB9-8D1C-439E-BA6C-00804C58361E}%' 
OR [Sectors] LIKE '%{844C2884-4E6A-4F38-9DE4-7CCF7DDF06C6}%'

我需要檢索城市名稱以“某些字母”開頭且行扇區應位於(id1,id2,id3…n)而不是OR的行。 一些ID位於兩個ID之間,這些ID是定界數據(請參見圖片)。 有什么建議嗎?

在此處輸入圖片說明

您將需要編寫一個多語句表值函數,該函數將多值列轉換為多行。 (請參閱有關CREATE FUNCTION的文檔。)

一旦有了該功能,就可以通過CROSS APPLY對其進行調用。

(而且,正如Joel Coehoorn在評論中指出的那樣,您不應該在SQL Server中存儲這樣的數據。相反,請將“部門”的GUID移至外部表。或者至少將XML字段移動。)

我不明白您在where子句中的需要,但可以嘗試一下

SELECT * FROM (
    SELECT ID, 
        CAST('EDIT' AS NVARCHAR(MAX)) AS 'test',
        CAST([dbo].[SC_GetVersionedFieldValue](ID, '{8DBF084C-E575-4739-B37A-F732F72CFF69}') AS NVARCHAR(MAX)) AS 'City',
        CAST([dbo].[SC_GetVersionedFieldValue](ID, '{32ED6082-1145-4331-9D29-F47E19090A0A}') AS NVARCHAR(MAX)) AS 'Sectors' 
    FROM [dbo].[Items] WHERE [TemplateID] = '{000C7660-E35B-4734-B1DA-A42A79A7B827}') 
    mytable 
WHERE [City] like '[A-Z]%' --'[a-z]%'
and (
        [Sectors] LIKE '%{20090D52-4C76-4C93-A249-F6E0883F4663}%' 
        OR [Sectors] LIKE '%{FAE9FCB9-8D1C-439E-BA6C-00804C58361E}%' 
        OR [Sectors] LIKE '%{844C2884-4E6A-4F38-9DE4-7CCF7DDF06C6}%'
        )

希望有一些想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM