【问题标题】:Set the last letters of a string equal PostgreSQL设置字符串的最后一个字母等于 PostgreSQL
【发布时间】:2011-07-28 19:11:20
【问题描述】:

我在表“OG”中有一个“名称”和“ID”列,并希望找到最后一个字母不同且总编辑距离为 2 的名称。到目前为止,我有:

SELECT
z1.names as names1, z2.names as names2, z1.ids, z2.ids
FROM (SELECT t.names, SUBSTRING(t.names for Length(t.names-1) AS newnames
from "OG" t) z1, (SELECT r.names, SUBSTRING(r.names for Length(r.names-1) AS
newnames1 FROM "OG" r) z2
WHERE levenshtein(z1.newnames, z2.newnames1) = 2 AND z1.id != z2.id

不幸的是,这并不能确保最后一个字母不同。有什么解决办法吗?

【问题讨论】:

    标签: sql string postgresql letter


    【解决方案1】:

    同时检查最后一个字符:

    WHERE levenshtein(z1.newnames, z2.newnames1) = 2 AND z1.id != z2.id
    AND substring(z1.names,Length(z1.names)) <> substring(z2.names,Length(z2.names))
    

    请注意,当字符串为空(非空)时,在查询中使用SUBSTRING(t.names for length(t.names)-1) 会失败

    【讨论】:

      猜你喜欢
      • 2017-01-26
      • 2015-12-26
      • 1970-01-01
      • 2023-03-28
      • 2016-06-28
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多