Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储过程中的通配符_Sql Server_Stored Procedures_Ssms - Fatal编程技术网

Sql server 存储过程中的通配符

Sql server 存储过程中的通配符,sql-server,stored-procedures,ssms,Sql Server,Stored Procedures,Ssms,我有一个SQL Server数据库,其中包含一个表地址(a_id:int,street:nvarchar(50),apt:nvarchar(50),city:nvarchar(50),state:nvarchar(50),zip:int) 我有一个存储过程,它返回特定地址的a_id SELECT address_id FROM address a WHERE street like '%'+ @street +'%' and apt like '%'+ @apt

我有一个SQL Server数据库,其中包含一个表
地址(a_id:int,street:nvarchar(50),apt:nvarchar(50),city:nvarchar(50),state:nvarchar(50),zip:int)

我有一个存储过程,它返回特定地址的
a_id

SELECT
    address_id
FROM
     address a
WHERE
    street like '%'+ @street +'%'
    and apt like '%'+ @apt +'%'
    and zip = @zip
例如,如果我输入
1060西艾迪生街芝加哥IL 60613
,我希望获得与
1060西艾迪生街芝加哥IL 60613
1060西艾迪生街芝加哥IL 60613
相同的
a_id

如您所见,我尝试在
street
apt
列中放置通配符,以解释缩写和句点的差异,但它不起作用


目前只有第一个示例返回
a_id
,因为这与数据库中的内容完全匹配类似
操作符的工作方式与您希望的不同。如果使用
如%Addison%
,它将同时返回
West Addison
W Addison
,但如果输入为
West Addison
,它将无法返回
W Addison

发件人:

对于您的场景,您可能希望签出
full-tezxt-index-search
,这可能允许您实现目标。具体来说,
CONSTAINABLE
关键字可能会帮助您:

使用加权值(加权项)搜索单词或短语

您可以使用CONTAINSTABLE搜索单词或短语并指定 权重值。重量,以0.0到1.0之间的数字测量, 指示一组单词中每个单词和短语的重要性 和短语。权重0.0是最低的,权重1.0是最低的 最高的

以下示例显示搜索所有客户的查询 地址,使用权重,其中任何以字符串开头的文本 “Bay”有“Street”或“View”。结果给了一个更高的排名 包含更多指定单词的行

加权项可与任何简单项结合使用, 前缀项、生成项或邻近项


来源:

类似的
操作符不能像您希望的那样工作。如果使用
如%Addison%
,它将同时返回
West Addison
W Addison
,但如果输入为
West Addison
,它将无法返回
W Addison

发件人:

对于您的场景,您可能希望签出
full-tezxt-index-search
,这可能允许您实现目标。具体来说,
CONSTAINABLE
关键字可能会帮助您:

使用加权值(加权项)搜索单词或短语

您可以使用CONTAINSTABLE搜索单词或短语并指定 权重值。重量,以0.0到1.0之间的数字测量, 指示一组单词中每个单词和短语的重要性 和短语。权重0.0是最低的,权重1.0是最低的 最高的

以下示例显示搜索所有客户的查询 地址,使用权重,其中任何以字符串开头的文本 “Bay”有“Street”或“View”。结果给了一个更高的排名 包含更多指定单词的行

加权项可与任何简单项结合使用, 前缀项、生成项或邻近项

资料来源:

% - Any string of zero or more characters. - WHERE title LIKE '%computer%' 
finds all book titles with the word 'computer' anywhere in the book title.
USE AdventureWorks2012 GO

SELECT AddressLine1, KEY_TBL.RANK  FROM Person.Address AS Address
INNER JOIN CONTAINSTABLE(Person.Address, AddressLine1, 'ISABOUT
("Bay*", 
         Street WEIGHT(0.9), 
         View WEIGHT(0.1)
         ) ' ) AS KEY_TBL ON Address.AddressID = KEY_TBL.[KEY] ORDER BY 
KEY_TBL.RANK DESC GO