DECLARE @B NCHAr(20)
SET @B = '0'
DECLARE @A NCHAr(20)
SET @A = '_' + @B
SET @A = @A + 'f'
print @A
这个打印出来的为什么是_0不是_0f啊?也就是说单引号中的字符串后面可以连接变量,但是变量后面连接不上去字符串啊,求大神解救!
sql语句中变量与字符串连接问题
答案:2 悬赏:0
解决时间 2021-02-22 15:29
- 提问者网友:挣扎重来
- 2021-02-21 23:45
最佳答案
- 二级知识专家网友:孤伤未赏
- 2021-02-22 01:19
这是由于你的变量声明为定长字符型的缘故,你给变量@A设置的为定长20位长,通过SET @A = '_' + @B 给变量@A赋赋值后,里面存储的内容为"_0 ",即后面有18个空格,你后面有通过SET @A = @A + 'f'给它赋值,超过20位长,所以后面的f就无法保存.解决办法有两种:
1.把DECLARE @A NCHAr(20)改为:DECLARE @A NVARCHAr(20)
2.把SET @A = @A + 'f'改为:SET @A = RTRIm(@A) + 'f'
1.把DECLARE @A NCHAr(20)改为:DECLARE @A NVARCHAr(20)
2.把SET @A = @A + 'f'改为:SET @A = RTRIm(@A) + 'f'
全部回答
- 1楼网友:我颠覆世界
- 2021-02-22 02:48
那要看你使用的是什么样的sql系统,如果使用的是标准的sql,一般可以这样写: update char set name=concat(name,"abc") where id=1; 这里要注意的是:concat是标准的字符串连接函数,你要保证你name属性的数据类型是字符串型的,还有,根据你使用的系统,决定引用字符串时是使用单引号还是双引号;如果你使用的系统是mysql,mssql或者其他的sql,一般还有对应的更加简洁的表达式。 还有,在有的sql系统里,你上面的表达式是可以使用的,只需把单引号换双引号即可。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯