none
DECLARE 設定 IN 所需字串,如何自動轉為含' RRS feed

  • Frage

  • 您好:

    請問

    DECLARE @x varchar(max);
    set @x='29910,14850,RG41 1QW';

    select * from Person.Address where PostalCode  in (@x)

    這樣 一定沒撈到資料

    該如何 自動讓@x 變為 '29910','14850','RG41 1QW' 讓他可用

    若遇到  Set @StrSQL= N'
                     Select * .. in ' + @x +'''

    這又該如何處理!

    謝 謝!



    Donnerstag, 28. November 2019 13:21

Antworten

  • 那篇回文上面就寫了 :

    Starting with  SQL2017 you can use STRING_SPLIT and do this

    不過我看了 STRING_SPLIT (Transact-SQL)

    文件中寫的是相容性層級 130 ,理論上應該是 SQL 2016 SP1,不過你得要檢查一下自己資料庫的相容性層級是否設定正確
    參考
    檢視或變更資料庫的相容性層級


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/


    • Bearbeitet Bill ChungMVP Freitag, 29. November 2019 13:43
    • Als Antwort markiert softballnow Sonntag, 8. Dezember 2019 07:25
    Freitag, 29. November 2019 13:38
  • 換個方式吧 您把變數塞到一個temp table

    create table #temp(PostalCode nvarchar(50))

    insert #temp

    select '29910'

    insert #temp

    select ................

    select * from Person.Address where PostalCode in(select PostalCode from #temp)

    • Als Antwort markiert softballnow Sonntag, 8. Dezember 2019 07:25
    Donnerstag, 5. Dezember 2019 00:27

Alle Antworten

  • 參考

    How do I use a variable in an IN clause?

    Define variable to use with IN operator (T-SQL)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/

    Donnerstag, 28. November 2019 20:13
  • 您好:

    謝謝, 不過我試了

    How do I use a variable in an IN clause?

    只有第一個方法可以直接用,而第3個方法,似乎只適合 數字 的參數內容

    而, 我參考

    https://stackoverflow.com/questions/1707326/define-variable-to-use-with-in-operator-t-sql

    DECLARE @InList varchar(255) = 'AUD;BTC;CAD';

    WITH InList (ItemX) AS (
        SELECT value FROM dbo.String_Split(@InList, ';')
    )

    我SQL SERVER為 2016版,卻出現  無效的物件名稱 'dbo.String_Split'。  ??

    謝謝!

    Freitag, 29. November 2019 03:14
  • 那篇回文上面就寫了 :

    Starting with  SQL2017 you can use STRING_SPLIT and do this

    不過我看了 STRING_SPLIT (Transact-SQL)

    文件中寫的是相容性層級 130 ,理論上應該是 SQL 2016 SP1,不過你得要檢查一下自己資料庫的相容性層級是否設定正確
    參考
    檢視或變更資料庫的相容性層級


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。 https://skilltree.my/


    • Bearbeitet Bill ChungMVP Freitag, 29. November 2019 13:43
    • Als Antwort markiert softballnow Sonntag, 8. Dezember 2019 07:25
    Freitag, 29. November 2019 13:38
  • 換個方式吧 您把變數塞到一個temp table

    create table #temp(PostalCode nvarchar(50))

    insert #temp

    select '29910'

    insert #temp

    select ................

    select * from Person.Address where PostalCode in(select PostalCode from #temp)

    • Als Antwort markiert softballnow Sonntag, 8. Dezember 2019 07:25
    Donnerstag, 5. Dezember 2019 00:27