【问题标题】:Split string separated by comma用逗号分隔字符串
【发布时间】:2019-10-09 08:06:05
【问题描述】:

用逗号分隔字符串并获取每个值的最佳方法是什么? 例子

@variable = john,emma,walter, ... , dallas,

然后取单个值,例如...

john
emma
walter
...
dallas

我需要每个值来动态创建一个选择语句,例如:

select * from tableName where john = ... and emma = ... //etc...

谢谢大家

解决方案 How to split a comma-separated value to columns 不同,因为它会吐到列中...我需要将每个值用于 select/where 语句...

【问题讨论】:

  • 使用string_split()函数
  • SQL Server 的哪个版本?
  • 等等,您正在尝试检查 column john 的值是否为 something 且列 emma 的值是否为something 等,如果列的值为 'John'
  • 样本数据和预期结果在这里会很有帮助,因为我真的不明白你所说的 where john = 是什么意思。 John 的列来自哪里?如果它来自分隔数据,John 来自哪里?您的分隔列表不是 CSV。

标签: sql sql-server split sql-server-2017


【解决方案1】:

使用变量表并加入它

Declare @SplitDate Table(
    DataValue NVARCHAR(100)
)
DECLARE @variable NVARCHAR(MAX)  = 'john,emma,walter,dallas'
INSERT INTO @SplitDate(DataValue)

SELECT value FROM STRING_SPLIT(@variable, ',');


SELECT * FROM @SplitDate

【讨论】:

    【解决方案2】:

    反过来说。您应该搜索的是...

    WHERE 
        ',' + 'john,paul,ringo,george' + ',' LIKE '%,' + myfield + ',%'
    

    请注意,我附加了额外的语音标记集,以便您可以使用来自变量的列表,例如

    WHERE 
        ',' + @mylist + ',' LIKE '%,' + myfield + ',%'
    

    【讨论】:

    • 也许你的意思是'%,' + MyColumn + ',%'没有?
    • @Sami - 是的 - 只是匆忙错过了那些!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    相关资源
    最近更新 更多