Sql 参数存储过程中的Like函数
你好 我对我的存储程序有以下问题: 我需要知道哪个经理有哪个员工 我的语句与函数as SELECT正常工作,但 我的问题是当我回缩0行时的过程。 我想应该是我在创建procerure时遇到的函数问题 谢谢你的意见Sql 参数存储过程中的Like函数,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,你好 我对我的存储程序有以下问题: 我需要知道哪个经理有哪个员工 我的语句与函数as SELECT正常工作,但 我的问题是当我回缩0行时的过程。 我想应该是我在创建procerure时遇到的函数问题 谢谢你的意见 create procedure test @Name varchar(200) as WITH n(Surname,Name) AS (SELECT Surname,Name FROM [dbo].[phonebook] WHERE Name like '%
create procedure test @Name varchar(200) as
WITH n(Surname,Name) AS
(SELECT Surname,Name
FROM [dbo].[phonebook]
WHERE Name like '%@Name' --I need to be like here beause before name is XT245*/ SUBCODE
UNION ALL
SELECT subs.Surname, subs.Name
FROM [dbo].[phonebook] as subs, n
WHERE n.Surname = subs.Boss)
SELECT Name FROM n
exec test 'XX37485*/John'
这句话:
其中名称类似于“%@Name”--我需要类似于此处,因为名称之前是XT245*/SUBCODE
正在查找具有相同字符模式的名称<代码>@N a m e。没有变量替换
如果要使用类似于的,则:
WHERE Name like '%' + @Name
请注意,这要求模式以@Name
结尾,因此它不会匹配字符串中的任何位置。您没有使用参数。您使用的字符串包含字符%、@、N、a、m、e。改用'%'+@Name
。当然,你应该知道这将是非常缓慢的,因为%无论什么都不能利用索引。像@name一样,不要将它括在单个引号中。这意味着我在创建过程时需要使用Like函数?如果名称包含非名称数据,你还是有一个严重的错误。一个字段应该包含一种信息。这是最基本的设计规则-1范式。修复数据库后,您就不需要这些奇怪的查询,也不需要处理糟糕的问题performance@Ven它不会,除非参数包含%
字符,否则它将像=
一样工作