注册 登录
编程论坛 SQL Server论坛

[求助]语句不理解

flmls 发布于 2007-03-19 20:44, 1312 次点击
DECLARE @SQL VARCHAR(200),@AA CHAR(10)
SET @AA='ZCKC'
SET @SQL='SELECT * FROM '+@AA
execute(@sql
)


'SELECT * FROM '+@AA这个能显示什么
15 回复
#2
棉花糖ONE2007-03-19 21:10
DECLARE @SQL VARCHAR(200),@AA CHAR(10)
SET @AA='ZCKC'
SET @SQL='SELECT * FROM '+@AA
加上一句 print @SQL 输出的就是一般的查询语句,exec用来执行动态的sql语句或者存储过程的
#3
flmls2007-03-19 21:35
'+'是两个数据类型相同的数据相结合

如何两个数据类型不相同的,如何结合,用什么符号
#4
棉花糖ONE2007-03-19 22:01
数据类型不符合可以强制转换啊,去看看convert
#5
lhj20052007-03-19 23:16


想知道,如果123和456,是用+号

如果是123和ABC的话,是用哪个符号啊?记的以前使用过的,不过忘记了,请教

[此贴子已经被作者于2007-3-20 0:41:46编辑过]

#6
bygg2007-03-20 08:53
'SELECT * FROM '+@AA
@AA 是个变量..这条语句的作用是:查询你自己需要的表中的所有数据.根据你传入的@AA的不同,查询出来的数据也就不同..
#7
liuminghui2007-03-21 09:32
顶!!
#8
棉花糖ONE2007-03-21 10:38
一定要记住的就是sql server中字符型默认是会转成数字类型的,这个和编程语言是有区别的
#9
flmls2007-03-21 20:05
以下是引用棉花糖ONE在2007-3-21 10:38:33的发言:
一定要记住的就是sql server中字符型默认是会转成数字类型的,这个和编程语言是有区别的

我还是不太理解,字符型 默认转换成 数字型的,能举个例子说明一下吗?谢谢

#10
棉花糖ONE2007-03-22 00:10
select 'aa'+1你去运行看看是不是错的
#11
flmls2007-03-22 00:18
应该是错的啊,字符和数字不能相加啊

结果也是错的啊
将 varchar 值 'aa' 转换为数据类型为 int 的列时发生语法错误。

我的理解是,只有是 全是数字的字符型 是可以加减的,有字母的字符型是不行的,可以这样认为吗

[此贴子已经被作者于2007-3-22 0:24:30编辑过]

#12
棉花糖ONE2007-03-22 00:23

所以说是默认要将字符转成数字啊
select 'aa'+cast(11 as varchar) 这样就是对的了

#13
flmls2007-03-22 00:31
上面的看懂了,要同样类型的数据才能运算
select 'aa'+'bb'  显示aabb
select cast(11 as varchar)+cast(22 as varchar)  显示1122

select cast(11 as varchar)+cast(22 as varchar)+1  显示1123

select cast(11 as varchar)+cast(22 as varchar)+1  错误

我的理解是,只有是 全是数字的字符型 是可以数学加减的,有字母的字符型是不行的,可以这样认为吗
#14
xiyou4192007-03-23 22:47
以下是引用flmls在2007-3-22 0:31:43的发言:
上面的看懂了,要同样类型的数据才能运算
select 'aa'+'bb'  显示aabb
select cast(11 as varchar)+cast(22 as varchar)  显示1122

select cast(11 as varchar)+cast(22 as varchar)+1  显示1123

select cast(11 as varchar)+cast(22 as varchar)+1  错误

我的理解是,只有是 全是数字的字符型 是可以数学加减的,有字母的字符型是不行的,可以这样
最后的错误语句写错了,本来想写的是什么呢?
#15
flmls2007-03-26 21:33
也忘记了,好象是准备写
select cast(11 as varchar)+cast(22 as varchar)+a 错误
#16
棉花糖ONE2007-03-26 22:03
select cast(11 as varchar)+cast(22 as varchar)+'a' 少了单引号
1