模糊字符串搜索函数

Netezza Performance ServerSQL 语言支持两种模糊字符串搜索功能:Levenshtein Edit Distance 和 Damerau-Levenshtein Edit Distance。

模糊字符串搜索是一种基于定义技术或算法的近似字符串匹配方式。 这些函数对两个字符串进行比较,以显示它们的相似或不同程度。 这些函数仅支持 VARCHAR 和 CHAR 数据类型Latin9编码)。

列氏编辑距离

SQL 语法:
le_dst(<str_expr_1>, <str_expr_2>)

返回值是一个整数int4),表示根据莱文斯坦编辑距离算法计算出的两个输入字符串的不同程度。 如果值为 0,则表示字符串在不做任何修改的情况下是等价的。 该算法计算将第一个字符串变为第二个字符串所需的修改次数。 字符串区分大小写。 修改是指增加、删除、改变大小写或替换单个字符。

例如:
  • le_dst('sow','show')的返回值为 1(添加字符 h)。
  • le_dst('hello','Hollow')的返回值为 3(将 e 替换为 o,将 H 大写,并加上 w)。
要忽略大小写差异,可使用 "upper或 "lower函数在比较前更改字符串的大小写。 例如:
  • select le_dst('Smith','SMYTH')返回值为 4(三个大写字母的变化和 i 到 Y 的字母替换)。
  • select le_dst(upper('Smith'),'SMYTH')返回值为 1(I 到 Y 的字母替换)。

Damerau-Levenshtein 编辑距离

SQL 语法:
dle_dst (<str_expr_1>, <str_expr_2>)
返回值表示根据 Damerau-Levenshtein 编辑距离算法计算出的两个输入字符串的不同程度。 与莱文斯坦算法类似:
  • 修改是指增加、删除、改变大小写或替换单个字符。
  • 返回值是一个整数int4),表示将第一个字符串修改为第二个字符串所需的修改次数。
  • 如果值为 0,则表示字符串在不做任何修改的情况下是等价的。
  • 字符串比较区分大小写。
不过,在达默罗-列文斯坦算法中,相邻字符的换位只算一次修改,而不是两次修改。 例如:
  • le_dst('two','tow')返回值为 2(将 w 改为 o,将 o 改为 w)。
  • dle_dst('two','tow')返回值为 1(w 和 o 的转置)。