sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")

Posted 老夫很紧张

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")相关的知识,希望对你有一定的参考价值。

" "(单引号)的运用:在sql server中,两个" "(单引号)在拼接字符串的情况下运用,就是表示拼接上了一个" "单引号字符串。

在此列举出正确的写法:

set @sql = update #temp_monthKQ_Users set day+@curruntCount+=‘‘‘+@descTemp+‘‘‘ where user_id = ‘‘‘+@user_id+‘‘‘ ‘;

错误的写法如下:

set @sql = update #temp_monthKQ_Users set day+@curruntCount+=‘‘‘+@descTemp+‘‘‘ where user_id = ‘‘‘+@user_id+‘‘;
// 变量@user_id后面少了2个引号,因此把print(@sql) 之后的字符串最右边少了个" ‘ "(单引号),所以后面必须要加2个" ‘ "(单引号)才不会丢失拼接的" ‘ "单引号。

执行了@sql之后错误便会如下图所示:

技术分享

倘若对于varchar类型的变量(这里是@user_id)不加单引号如下所写也会报错(并且sql server在识别上会把@user_id当做浮点数,限制8个字节,截断成为8位字符串的字段):

set @sql = update #temp_monthKQ_Users set day+@curruntCount+=‘‘‘+@descTemp+‘‘‘ where user_id = +@user_id+;

如下:bc460011就是被截断的字符串, @user_id变量在此刻的值为:4028e5855335612201533573bc460011。

技术分享

如图是正确写法:

技术分享

 

以上是关于sql server中单引号拼接字符串(书写错误会出现错误"浮点值 XXXX 超出了计算机表示范围(8 个字节)。“XX”附近有语法错误。")的主要内容,如果未能解决你的问题,请参考以下文章

Sql Server添加单引号

SQL中单引号和双引号有啥用? [复制]

shell脚本中单双引号疑惑

sql中单引号跟双引号有啥区别?分别用于啥情况?

Java中单双引号的意义

sql注入过程中单引号和多个关键字被过滤怎么办?