如何以字符串格式编写SQL命令

如何以字符串格式编写SQL命令,sql,sql-server,Sql,Sql Server,如何转换此代码: SELECT * FROM DB WHERE field LIKE N'%'+RTRIM(LTRIM('98'))+N'%' 致: 这里有点猜测。请输入下面的代码。并确保查看代码中的注释,因为有几件事情需要改进 declare @field nvarchar(10) = N'98' select * --don't use *, select ONLY the columns you need from DB where Name like '%' + @field+ '%

如何转换此代码:

SELECT * FROM DB
WHERE field LIKE N'%'+RTRIM(LTRIM('98'))+N'%'
致:


这里有点猜测。请输入下面的代码。并确保查看代码中的注释,因为有几件事情需要改进

declare @field nvarchar(10) = N'98'

select * --don't use *, select ONLY the columns you need
from DB
where Name like '%' + @field+ '%' --be careful here, this is a nonSARGable predicate with the leading wildcard. As such all indexes will be rendered useless.

如果我想用字符串格式在SQL中设置SELECT命令,我们可以使用:

SET @stringWhere= 'SELECT * FROM DB AND field LIKE '+'N''%'+ RTRIM(LTRIM(@field))+'%'''+' ' ;

那根本不是你想做的。你不应该建立这样一个字符串。您应该使用参数化查询来防止sql注入。当然,您所要求的字符串是无效的,因为没有where子句。我不清楚您所要求的是什么。考虑复习。正如@SeanLange所建议的,请继续阅读。你好,Masi,欢迎来到Stack Overflow!如目前所写,您的问题不清楚,可能会结案。不要放弃。改进你的问题,使其易于理解,你会发现那些接近票数的选票将被删除。你想知道,单引号必须加倍才能避开它们吗?
SET @stringWhere= 'SELECT * FROM DB AND field LIKE '+'N''%'+ RTRIM(LTRIM(@field))+'%'''+' ' ;