两个简单查询语句提示varchar值转换为数据类型为 int 的列时发生语法错误

selecta,b,c,''d,0efromgzjbkunionallselect''a,''b,0c,d,efromyl单独执行语句的时候都可以,加‘unionall’... select a,b,c,''d,0 e from gzjbk
union all
select '' a,'' b,0 c,d,e from yl
单独执行语句的时候都可以 ,加‘union all’之后为什么会提示varchar值转换为数据类型为 int 的列时发生语法错误?该怎样修改可以解决?
列e,c全是varchar型
展开
 我来答
紫仑天玑
推荐于2018-05-09 · 萝卜数学关注思维过程
紫仑天玑
采纳数:324 获赞数:888

向TA提问 私信TA
展开全部


使用类型转化函数就可以了。



在sql 输出时,按照标准会统一使用一种类型,保证记录格式统一。


你可能要问,为啥 varchar 转化成int,而不是int 转化为 varchar。

跟union all 上下子SQL 顺序有关么?


这就是类型优先级的问题,


int 优先级是 16 ,varchar 是 27, int优先级高于varchar


所以会优先转化为 int,你只要把你的sql 通过函数转化为同一种类型即可。sql采用的是书面值转化。


比如


select 10

union all

select '1'


也可以成功。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式