【发布时间】:2016-10-21 09:31:28
【问题描述】:
我的表 T 中有一个 TEXT 列,其中包含一些用逗号分隔的值。
示例
列 BNFT 具有文本值,例如
B20,B30,B3,B13,B31,B14,B25,B29,B1,B2,B4,B5
OR
B1,B2,B34,B31,B8,B4,B5,B33,B30,B20,B3
我只想在 B3 存在时在我的查询中返回结果。 它不应考虑 B30-B39 或 B[1-9]3(即 B13、B23 .... B93)。
我尝试了以下查询,但想实现 REGEXP 或 REGEXP_LIKE/INSTR 等。以前没有使用过,也无法理解。
Select *
FROM T
Where BNFT LIKE '%B3,%' or BNFT LIKE '%B3'
请多多指教
程序将不起作用。查询必须以 Select as 1st 语句开头。
【问题讨论】:
-
只是为了清楚。列中的单个单元格包含 'B20,B30,B3,B13,B31,B14,B25,B29,B1,B2,B4,B5' 作为字符串,或者这个 b20 是不同于 b30 的单元格?
-
它是一个文本列,所有这些都在一个记录中。它就像该列的多个值,用逗号分隔。所以说客户已订阅所有福利 B1、B2、B7 等......
-
帮自己一个大忙:规范化你的架构。
-
它已经建立的数据库。所以无法更改。我只是在查询为客户获取数据:) –
标签: sql regex sql-server-2005