SQL如何生成含单引号的字段拼接语句?语法求助
正确生成「Emp_name's salary is.....」格式的SQL语句
你的原语句存在两个核心问题:单引号转义错误、字符串拼接语法的数据库兼容性问题。以下是不同主流数据库的正确写法:
SQL Server
方法1:使用+拼接(需确保字段非空)
SELECT empname + '''s salary is ' + CAST(salary AS VARCHAR(10)) FROM emp
- 单引号转义规则:SQL Server用连续两个单引号表示一个实际单引号,因此
's需写成'''s(外层单引号+转义单引号+s) - 指定
VARCHAR(10)长度,避免数值转字符串时被截断
方法2:使用CONCAT函数(自动处理空值)
SELECT CONCAT(empname, '''s salary is ', salary) FROM emp
CONCAT会自动将数值类型的salary转为字符串,无需手动CAST
MySQL
MySQL不支持用+做字符串拼接(会被当作数值运算),必须使用CONCAT函数:
SELECT CONCAT(empname, '''s salary is ', salary) FROM emp;
若sql_mode未开启ANSI_QUOTES,也可简化单引号写法:
SELECT CONCAT(empname, "'s salary is ", salary) FROM emp;
Oracle
Oracle用||做字符串拼接,需用TO_CHAR转换数值类型:
SELECT empname || '''s salary is ' || TO_CHAR(salary) FROM emp;
或嵌套使用CONCAT函数(仅支持两个参数):
SELECT CONCAT(CONCAT(empname, '''s salary is '), TO_CHAR(salary)) FROM emp;
原语句错误说明
你写的's''salary is'会被解析为s'salary is(两个单引号转义成一个),缺少s与salary之间的空格;同时部分数据库不支持+拼接字符串,导致语句运行失败。
内容的提问来源于stack exchange,提问作者Aniket Thakale
相关产品推荐
相关产品推荐

