【问题标题】:Return length of string for comparison返回字符串长度进行比较
【发布时间】:2018-07-24 01:10:41
【问题描述】:

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

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

Products 是我们要比较的字符串以及比较的长度如果有意义的话,我希望与字符串的长度相同?

假设我们有 Hydrogen 和 Hydrogen Oxide Like 两者都匹配,所以我需要指定我要比较的内容...

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

氧化氢是水。 氧气是空气。 氢气 II 和氧气 II 可以结合生成水。 氢气是一种气体。 Oxygen II 未定义。

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

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

氧化氢是水。 |氧化氢。 氧气是空气。 | Oxygen Hydrogen II 和 Oxygen II 可以组合成 创造水。 | Hydrogen II, Oxygen II 氢气是一种气体。 |氢 氧气 II 未定义。 |氧气II。

我可以从查询中得到的结果各不相同,但我尽量避免:

氧化氢是水。 |氧化氢。氧气是空气。 |氧。 氢气 II 和氧气 II 可以结合生成水。 |氧气Ⅱ。 氢气 II 和氧气 II 可以结合生成水。 |氢。 II 氢气是一种气体。 |氢氧 II 未定义。 |氧气。

【问题讨论】:

  • 我不明白你;)
  • 啊哈,我有多个非常相似的字符串要比较,如果可能的话,我想专门设置我从左边比较的字符串的长度,我似乎得到了最短的匹配,所以我会喜欢在比较中指定长度。
  • LEFT(Products, LENGTH(Products)) 与 Products 有何不同?列的来源名称。避免列名与表相同。哪个数据库?
  • 表格不一样,代码只是假设的,因为我无法发布确切的代码;)我有很多可以匹配的产品,但它必须匹配完整的字符串,否则查询将返回无效字符串根据产品的性质。产品的一个基本示例是氢气和二氧化氢,就像两者都匹配......
  • 因为名称在描述中,如果匹配,我将其附加到描述中。描述与产品不完全匹配,描述字段中有其他数据。

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


【解决方案1】:

嗯。我想你想要:

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

这是实现此目的的一种方法。请注意,将LIKE 与通配符一起使用会大大降低查询的性能。

【讨论】:

  • 如果数据库是 Oracle,尾随通配符不会阻止索引的使用。
  • 这是一个很好的结果,而不是我正在寻找的确切答案,因为我得到了一个结果,例如:Oxygen and Oxygen II
【解决方案2】:

回过头来看这个问题,这个问题的答案其实很简单…… Stack Overflow 上的人建议的查询和我自己编写的代码,实际上完全按照预期的那样做……话虽如此,数据集非常混乱,导致返回了一些无效的结果。这只能通过以下两种方式之一来纠正,一种方式是通过字符串操作清理数据集。另一种方法是获得一个干净的数据集,您可以将其与获得的干净数据集进行隐式比较,这是我用来绕过无效数据问题的方法......我希望这对某人有所帮助......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-09-04
    • 2022-11-22
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多