[英]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.