标签:
今天出现了模板数据未加载BUG,历经2个多小时,终于解决了。。。
一般项目都会有两个数据库,一个测试库,一个上线库.由于各种原因,同样的sql语句,在两个几乎同样的数据库,却产生了不同的结果.
一个出现正常的结果,另一个出现了字段的值均为blog,开始没看出来有什么不一样,是因为在上线库中执行sql,老报错误.
sql如下:
SELECT T .ISBN, WM_CONCAT (T .CHNAME) PTYH, ‘‘ AS XSDB FROM ( SELECT T .*, U .CHNAME FROM CBS_BOOKRECORD T, CBS_USERINFO U WHERE U .UNID = T .USERUNID AND T .ACTIVETYPE = 1 AND U . TYPE = ‘否‘ ) T GROUP BY T .ISBN UNION SELECT T .ISBN, ‘‘ AS PTYH, WM_CONCAT (T .CHNAME) XSDB FROM ( SELECT T .*, U .CHNAME FROM CBS_BOOKRECORD T, CBS_USERINFO U WHERE U .UNID = T .USERUNID AND T .ACTIVETYPE = 1 AND U . TYPE = ‘是‘ ) T GROUP BY T .ISBN
上线库报错信息:表达式必须具有与对应表达式的值.
可能出错的原因:
两个表的字段类型,长度可能不一样.
可能出现了一条脏数据
函数错误
然而以上错误都不是,居然是数据库版本不一样导致的.因为WM_CONCAT()函数会因为版本的不一样而变成2B,所以需要测试库和上线库的版本一定要一致,但是现在也不可能换数据库,所以函数改成了这样:
TO_CAHR(WM_CONCAT())转换成字符串。
其实用UNION链接表的时候,两张表字段必须一致,产生的结果不一样,所以出现上面描述的错误.(字段的类型,长度可以忽略)。
等待一会部署下,看看是否成功!
补充:
WM_CONCAT (T .CHNAME) XSDB
表示将根据相同的字段将CHNAME放在一起,然后组成的值给XSDB(别名),例如:
男,张三
男,李四
result:男,张三,李四
实例:
select WM_CONCAT(SERVICETYPE) FROM NK_SUBSCRIPTION select SERVICETYPE FROM NK_SUBSCRIPTION
以上2个SQL试一下就知道这个函数的作用了(列变行)
标签:
原文地址:http://my.oschina.net/Tsher2015/blog/528995