sql搜索记录where field喜欢(field1用破折号在哪里)

时间:2013-06-27 07:21:06

标签: mysql sql

字典数据库,包含该单词的重复条目。 1是正确的,第二条记录不同且不正确。好的行在field2内的任何地方都没有带连字符的field1版本。

错误的记录在第二个字段(定义)中都有来自field1的单词,但在单词的某处有一个破折号或连字符。

要查找的行的2个示例:A)field1 = Mother,field2在字段定义内的某处有单词M-other; B)field1 = Jackknife,字段2在字段定义内的某处有Jack-knife。 所以我想的是一个类似的子句但是喜欢(字段1在field1字的任何地方都带有连字符)。

如果这不是太混乱,我希望有人可能会有一些想法尝试。如果您需要澄清,请告诉我。非常感谢您提前查看。

3 个答案:

答案 0 :(得分:0)

获取错误的行

Select field1, field2
from table
where replace(field2, '-', '') = field1

获得好行

Select field1, field2
from table
where field1 not like '%-%'

答案 1 :(得分:0)

你可以试试这样的事情......

-- the bad ones
SELECT *
FROM Table_XY
WHERE REPLACE(field2,'-','') LIKE '%' + field1 + '%'

-- the good ones
SELECT *
FROM Table_XY
WHERE REPLACE(ISNULL(field2,''),'-','') NOT LIKE '%' + field1 + '%' OR
      field2 LIKE '%' + field1 + '%'

答案 2 :(得分:0)

这样的事情应该做的工作:

SELECT * FROM table1 WHERE
  field1 = REPLACE(field2, "-", "") AND
  (SELECT LENGTH(field2) - LENGTH(REPLACE(field2, '-', ''))) >= 1;

有了这个,你可以确保两个字符串是相同的,而不必记住破折号。查询还检查field2是否有短划线,因此field1 = Father和field2 = Father将不会被选中,而field1 = Father和field2 = F-ather将会被选中。

如果您希望它不区分大小写,可以在查询中添加大写转换。

SQL Fiddle (example).