Sql 如何使用CSV对子查询进行输入?

Sql 如何使用CSV对子查询进行输入?,sql,tsql,Sql,Tsql,我在表列中有以下varchar值“1,2,4,5,…”。 基本上,它们只是CSV格式的代码。我知道这是一个糟糕的设计,但不幸的是,这正是我不得不面对的 现在我想创建一个子查询来查找与所有代码对应的描述。 我该怎么做 我试过这样的子查询 SELECT description FROM table WHERE table.CODE IN tablewithcsv.csvcolumn 但是没有用。 正常的IN的期望值,如('1','2','3'),但我怀疑我的值被传递为'1,2,3'。我必须在此处进

我在表列中有以下varchar值“1,2,4,5,…”。 基本上,它们只是CSV格式的代码。我知道这是一个糟糕的设计,但不幸的是,这正是我不得不面对的

现在我想创建一个子查询来查找与所有代码对应的描述。 我该怎么做

我试过这样的子查询

SELECT description FROM table WHERE table.CODE IN tablewithcsv.csvcolumn
但是没有用。
正常的IN的期望值,如
('1','2','3')
,但我怀疑我的值被传递为
'1,2,3'
。我必须在此处进行替换吗?

要搜索字符串,可以使用:

SELECT description FROM `table`
INNER JOIN `tablewithcsv` ON `tablewithcsv`.csvcolumn LIKE '%' + `table`.CODE + '%'
如果整数仅在字符长度上,但会在多个字符上返回误报,则这将起作用。如果您有多个字符,可以将其更改为:

SELECT description FROM `table`
INNER JOIN `tablewithcsv` ON `tablewithcsv`.csvcolumn = `table`.CODE
  OR `tablewithcsv`.csvcolumn LIKE `table`.CODE + ',%'
  OR `tablewithcsv`.csvcolumn LIKE '%,' + `table`.CODE
  OR `tablewithcsv`.csvcolumn LIKE '%,' + `table`.CODE + ',%'

使用正则表达式也可以更优雅地执行此操作。要在字符串中搜索,可以使用:

SELECT description FROM `table`
INNER JOIN `tablewithcsv` ON `tablewithcsv`.csvcolumn LIKE '%' + `table`.CODE + '%'
如果整数仅在字符长度上,但会在多个字符上返回误报,则这将起作用。如果您有多个字符,可以将其更改为:

SELECT description FROM `table`
INNER JOIN `tablewithcsv` ON `tablewithcsv`.csvcolumn = `table`.CODE
  OR `tablewithcsv`.csvcolumn LIKE `table`.CODE + ',%'
  OR `tablewithcsv`.csvcolumn LIKE '%,' + `table`.CODE
  OR `tablewithcsv`.csvcolumn LIKE '%,' + `table`.CODE + ',%'

这也可以用正则表达式更优雅地实现

@Davio-当然也可以匹配
12,41
你是对的,马丁,但幸运的是,对我来说,“整数”都是固定长度的“键”。@Davio-也可以匹配
12,41
你是对的,马丁,当然,但幸运的是,“整数”都是固定长度的“键”。