繁体   English   中英

SQL Server中的搜索索引忽略特殊字符

[英]Search index in SQL Server ignoring special characters

我在SQL Server表中有一个[nvarchar]列,包含123456789,123-456789,1234.56.789,1.23456-789等数据。 用户只需在某处添加点,减号和空格以便于阅读,我不知道在哪里。

有没有办法创建一个忽略特殊字符的索引,并在搜索普通“123456789”时找到它们?

没有办法按照你想要的方式做你想要的。

这样做的最佳机制是使用计算列。 它不需要持久化索引。

初始位置

CREATE TABLE YourTable
  (
     YourColumn NVARCHAR(50)
  );

INSERT INTO YourTable
VALUES      ('123456789'),
            ('123-456789'),
            ('1234.56.789'),
            ('1.23456-789');

创建计算列并将其编入索引。

ALTER TABLE YourTable
  ADD CanonicalForm AS 
 CAST(REPLACE(REPLACE(REPLACE(YourColumn, '.', ''), '-', ''), ' ', '') AS NVARCHAR(50));

CREATE INDEX ix
  ON YourTable(CanonicalForm)
  INCLUDE (YourColumn);

测试一下

SELECT *
FROM   YourTable
WHERE  CanonicalForm = '123456789'

执行计划寻求指数

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM