-1

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

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

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

如果这不是太令人困惑,我希望有人可以尝试一些想法。如果您需要澄清,请告诉我。非常感谢您甚至看一看。

4

3 回答 3

0

得到坏行

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

获得好的行

Select field1, field2
from table
where field1 not like '%-%'
于 2013-06-27T08:08:14.563 回答
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 + '%'
于 2013-06-27T08:11:42.890 回答
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 小提琴(示例)。

于 2013-06-27T08:13:55.033 回答