我的商店程序的where子句中有条件。我想在@LastName和@FirstName之后应用替换函数
这是我的代码
AND IN2.LNameTxt LIKE CASE WHEN @LastName IS NOT NULL THEN (@LastName) ELSE IN2.LNameTxt END
AND IN2.FNameTxt LIKE CASE WHEN @FirstName IS NOT NULL THEN @FirstName ELSE IN2.FNameTxt END
我想要@LastName或@ LastName.Replace(“''”,“”)之后有任何建议我怎么能这样做。
答案 0 :(得分:0)
不确定以下内容是否符合您的所有要求,但它应该有所帮助:
Declare @LastName varchar(20) = '''''Smith'
/* Use the statement below as a test of replacing the variable
Select REPLACE(@LastName, '''''', '')
*/
Select *
from Your.Data.Source IN2
where
IN2.LNameTxt Like
CASE
WHEN @LastName Is NOT Null THEN Replace(@LastName, '''''', '')
Else IN2.LNameTxt --Not sure why you want this here?
End
答案 1 :(得分:0)
使用COALESCE()函数。
我不明白为什么要将字段与自身进行比较作为默认值。
另外,我无法分辨你要替换的角色。我以为这是双引号。
AND IN2.LNameTxt LIKE REPLACE(COALESCE(@LastName, IN2.LNameTxt, ''), '"', '')
AND IN2.FNameTxt LIKE REPLACE(COALESCE(@FirstName, IN2.FNameTxt, ''), '"', '')
答案 2 :(得分:0)
请参阅有关SQL Server REPLACE
函数的TechNet文章:http://technet.microsoft.com/en-us/library/ms186862.aspx
另外,我认为您想要使用此模式。它应该更有效地运作。
AND
(
@LastName IS NULL --if @LastName param is null then do not filter on last name
OR
IN2.LNameTxt LIKE REPLACE(@LastName, 'SearchForText', 'ReplaceWithText')
)
AND
( @FirstName IS NULL --if @FirstName param is null then do not filter on first name
OR
IN2.FNameTxt LIKE REPLACE(@FirstName, 'SearchForText', 'ReplaceWithText')
)