返回字符串的长度以进行比较

时间:2018-02-13 15:51:15

标签: sql sql-server tsql sql-like string-length

例如,是否可以比较第二个字符串长度上的两个字符串。

SELECT ProductDescription, Products  
FROM ProductDescription
INNER JOIN Products 
ON ProductDescription LIKE LEFT(Products, LENGTH(Products)) + '%'

如果Products是我们正在比较的字符串和比较的长度,我希望它与字符串的长度相同(如果有意义的话)?

假设我们有氢气和氢氧化物匹配,所以我需要指明我要比较的东西......

更多描述字段可以例如说明:

  

氢氧化物是水。   氧气是空气。   可以将氢II和氧II组合以产生水。   氢气是一种气体。   氧气II未定义。

我有一个状态列表,例如: 氧。 氢。 氧气II。 氢II。 氢氧化物。

我想将正确的化学品附加到他们关注的描述中。例如:

  

氢氧化物是水。 |氢氧化物。   氧气是空气。 |氧气氢气II和氧气II可以结合使用   创造水。 |氢II,氧II氢是一种气体。 |氢   氧气II未定义。 |氧气II。

我可以从查询中获得的结果各不相同,但我试图避免:

  

氢氧化物是水。 |氢氧化物。氧气是空气。 |氧。   可以将氢II和氧II组合以产生水。 |氧气II。   可以将氢II和氧II组合以产生水。 |氢。   II氢是一种气体。 |氢氧II未定义。 |氧

2 个答案:

答案 0 :(得分:1)

嗯。我在想你想要:

SELECT ProductDescription, Products  
FROM ProductDescription INNER JOIN
     Products 
    ON ProductDescription LIKE Products + '%' OR
       Products LIKE ProductDescription + '%';

这是实现这一目标的一种方式。请注意,使用带有通配符的LIKE几乎会破坏查询的性能。

答案 1 :(得分:0)

回头看这个问题,这个问题的答案实际上非常简单... 我在Stack Overflow上的人建议的查询以及我自己编写的代码实际上确实按照预期的方式运行了。也就是说,数据集很乱,导致返回了一些无效的结果。这只能通过以下两种方式之一进行纠正,一种方式是通过字符串操作清除数据集。另一种可以获取干净数据集的方法,可以将其与获取的干净数据集进行隐式比较,这是我用来绕过无效数据问题的方法...我希望这对某人有帮助...