SQL语句的+号的问题

SQL如下:SET@sql='ALTERTABLEdbo.临时表1ADD['+@银行帐号名称+']INTDEFAULT0'EXECUTE(@sql),问题,为什么@银行帐... SQL如下:
SET @sql='ALTER TABLE dbo.临时表1 ADD ['+@银行帐号名称+'] INT DEFAULT 0'
EXECUTE(@sql),
问题,为什么@银行帐号名称前面有两个加号呢,前面的+号可以 省略吗 ?后面的+号可以省略吗?还有 [] 这个括号是干什么用的,不是有单引号了吗?为什么还需要[],
请高手指教,不懂得 或者不清楚的,请不要发言
展开
 我来答
hy1397471
2015-12-22 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部
sql 中的 + 号可以做运算符 +,也可以做为连接符。

一、两端都为数值 ,如 select 1+2 ,即返回3

二、两端引用字段,如 select a + b
1、a、b均为字符类型 ,做为连接符,即 a=1,b=1 select a+b 返回 11
2、a、b均为数值类型,做为运算符 ,即 a=1,b=1 select a+b 返回 2
3、a、b其中一列为数值型,那么系统会先尝试将字符列转数值,转换成功,以运算符运算,转换失败则报错。
如 a = '1' ,b=1, select a+b 返回 2 ,
而 a='a',b=1 ,select a+b 则系统报错。

该情况,不同的数据库管理系统,处理略有不同,比如部分数据库不会尝试转换,而是直接报错。
junailan2
2012-05-11 · 超过32用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:76.9万
展开全部
不可以省略,@银行帐号名称是一个变量,也是一个字符串。
SET @sql='ALTER TABLE dbo.临时表1 ADD ['+@银行帐号名称+'] INT DEFAULT 0'其实就是执行了三个字符串的相加操作,把结果赋值给@sql变量。
[]括号是为了兼容SQL SERVER里的关键字,如果字段名是关键字的话,某些版本的SQL SERVER会报错,所以要用[]括起来。
追问
三个字符串相加 ,您 能告诉我是 哪三个字符串相加啊,我怎么找不出是哪三个 字符串 啊,还请耐心指点
追答
单引号包含的就是字符串。
'ALTER TABLE dbo.临时表1 ADD [‘是一个字符串,'] INT DEFAULT 0'也是一个字符串,@银行帐号名称是一个字符串型的变量,也是一个字符串。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
传说中的鹰王
2012-05-11 · TA获得超过1053个赞
知道小有建树答主
回答量:923
采纳率:87%
帮助的人:551万
展开全部
如果@银行帐号名称 = pufa
相当于执行语句
ALTER TABLE dbo.临时表1 ADD [pufa] INT DEFAULT 0
@sql 是在拼执行语句。
因为语句中需要调用变量,所以要先拼出sql串,再执行
+号的作用是把两个字符串连在一起,
2个+号就把3个字符串连到了一起

[] 是把字段名括起来 ,用来定界,防止有空格等字符出现在字段里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刘伟伟实名
2012-05-11 · 超过17用户采纳过TA的回答
知道答主
回答量:135
采纳率:100%
帮助的人:41.8万
展开全部
首先解决"[]"的问题是:T_SQL语法已经规定凡是对对象命名不符合标准命名的,如你给对象命名时出现了特殊字符如空格,加号,等特殊字符需在对象名前加上[]或"",这样不会出错否则就出错。然后说加号问题,它的作用是连接字符串只要你要连接字符串必须用它
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式