주 콘텐츠로 건너뛰기

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

  • 질문

  • 您好:

    請問

    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 +'''

    這又該如何處理!

    謝 謝!



    2019년 11월 28일 목요일 오후 1:21

답변

  • 那篇回文上面就寫了 :

    Starting with  SQL2017 you can use STRING_SPLIT and do this

    不過我看了 STRING_SPLIT (Transact-SQL)

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


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


    • 편집됨 Bill ChungMVP 2019년 11월 29일 금요일 오후 1:43
    • 답변으로 표시됨 softballnow 2019년 12월 8일 일요일 오전 7:25
    2019년 11월 29일 금요일 오후 1: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)

    • 답변으로 표시됨 softballnow 2019년 12월 8일 일요일 오전 7:25
    2019년 12월 5일 목요일 오전 12:27

모든 응답

  • 參考

    How do I use a variable in an IN clause?

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


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

    2019년 11월 28일 목요일 오후 8: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'。  ??

    謝謝!

    2019년 11월 29일 금요일 오전 3:14
  • 那篇回文上面就寫了 :

    Starting with  SQL2017 you can use STRING_SPLIT and do this

    不過我看了 STRING_SPLIT (Transact-SQL)

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


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


    • 편집됨 Bill ChungMVP 2019년 11월 29일 금요일 오후 1:43
    • 답변으로 표시됨 softballnow 2019년 12월 8일 일요일 오전 7:25
    2019년 11월 29일 금요일 오후 1: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)

    • 답변으로 표시됨 softballnow 2019년 12월 8일 일요일 오전 7:25
    2019년 12월 5일 목요일 오전 12:27