如何使用where子句从表列中获取特定数据

时间:2014-02-18 21:35:15

标签: sql ms-access

我有一张像

这样的列的表格
         Prefix                     CModel

          g                     ;#WR_1;#WR_2;#WR_3;#WR_4;# 

          v                  ;#WR_3;#WR_4;#

         j                     WR_2

         m                     WR_1

         d              ;#WR_3;#WR_4;#   

          f9                      WR_3

我想从CModel的所有列WHERE CModel = WR_3中检索数据。

SELECT Prefix,CModel From table1 WHERE CModel = WR_3;

只返回一行。

                Prefix      CMODEL

                f9        WR_3

我希望它返回4行,因为WR_3存在于4行中(包含冒号分隔,如#WR_3;#WR_4;#)。如何在WHERE条件中指定?

1 个答案:

答案 0 :(得分:1)

鉴于你的表结构,我会使用这样的东西:

SELECT Prefix, CModel
FROM table1
WHERE
  [CModel] IS NOT NULL
  AND (";" & Replace([CModel], "#", "") & ";") Like "*;WR_3;*";
  • Replace([CModel], "#", "")将从模型中删除所有#字符
  • ";" & Replace(...) & ";"会添加一个;在一开始和一个;在字符串的末尾
  • Like "*;WR_3;*"将匹配包含;WR_3;的所有字符串,因此它也会匹配仅包含WR_3的行,但不会匹配包含WR_30