sql server—包含另一条记录的一部分的sql记录

pu3pd22g  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(588)

使用sql server 2014。有没有办法选择字符串值部分存在于另一个字段中的记录?
例如。:

RowID   Field1     Field2
1       ABC        ABC DEF
2       XYZ        WERQ
3       MNB        MNB RTW

从上面来看,我想要第1行和第3行,因为它们有匹配的和mnb。

SELECT RowID FROM MY TABLE
WHERE CONTAINS(Field1, Field2);

我已经尝试了上面的方法,但是,这不起作用,因为您不能在contains函数中指定第二个字段名。
我错过了什么?

c7rzv4ha

c7rzv4ha1#

你可以用 like :

select t.*
from t
where field2 like concat('%', field1, '%')

如果您只希望完整的“单词”匹配—那么,您应该修复您的数据模型。你不应该把东西的列表存储在一个字符串中。但是,如果必须,可以使用分隔符:

select t.*
from t
where concat(' ', field2, ' ') like concat('% ', field1, ' %')
zpf6vheq

zpf6vheq2#

我想你在找

SELECT *
FROM
(
  VALUES
  (1,       'ABC',        'ABC DEF'),
  (2,       'XYZ',        'WERQ'),
  (3,       'MNB',        'MNB RTW'),
  -- for col2 like col1
  (4,       'HI MNB RTW S',        'MNB RTW')
) T(Id, Col1, Col2)
WHERE  CONCAT(' ', Col1, ' ') LIKE CONCAT('% ', Col2, ' %') 
       OR
       CONCAT(' ', Col2, ' ') LIKE CONCAT('% ', Col1, ' %');

相关问题