如何以字符串格式编写SQL命令?如何转换指定SQL代码?
嗨,我来帮你搞定这两个SQL相关的问题!
1. 如何以字符串格式编写SQL命令?
在SQL(尤其是SQL Server这类数据库)里,把SQL命令写成字符串格式其实是动态SQL的基础写法,核心要点有这几个:
- 用单引号
'把整个SQL语句包裹起来,如果字符串本身包含单引号,需要用两个单引号''来转义(避免语法报错) - 如果要拼接变量,直接用
+运算符把变量和字符串片段连起来就行,但要注意变量类型——非字符串类型得先转成字符串(比如用CAST或CONVERT函数) - 要是需要支持Unicode字符,记得在字符串前加
N前缀,比如N'%查询内容%'
举个简单示例:
DECLARE @tableName NVARCHAR(50) = 'Users' DECLARE @sqlString NVARCHAR(MAX) = N'SELECT * FROM ' + @tableName + N' WHERE Id > 10'
2. 目标SQL代码转换
先看你给出的原SQL代码:
SELECT * FROM DB WHERE field LIKE N'%'+RTRIM(LTRIM('98'))+N'%'
按照要求转换后的代码如下:
SET @stringWhere= ' SELECT * FROM DB AND field LIKE '+N'%' +RTRIM(LTRIM(@field))+ N'%';
这里的转换关键点:
- 把原语句里的固定值
'98'替换成了变量@field,这样就能动态传入不同的查询值 - 把整个SQL片段包裹在单引号中,赋值给变量
@stringWhere,方便后续用于动态SQL执行 - 保留了
N前缀确保Unicode字符支持,同时保留RTRIM(LTRIM)来去除变量值的前后空格 - 把原语句的
WHERE改成了AND,推测你是要把这个片段作为后续WHERE子句的一部分来拼接使用~
内容的提问来源于stack exchange,提问作者Masi
相关产品推荐
相关产品推荐

