码迷,mamicode.com
首页 > 其他好文 > 详细

两个相同测试库出现blog的情况

时间:2015-11-11 17:57:35      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

今天出现了模板数据未加载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

上线库报错信息:表达式必须具有与对应表达式的值.

可能出错的原因:

  1. 两个表的字段类型,长度可能不一样.

  2. 可能出现了一条脏数据

  3. 函数错误

然而以上错误都不是,居然是数据库版本不一样导致的.因为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试一下就知道这个函数的作用了(列变行)

两个相同测试库出现blog的情况

标签:

原文地址:http://my.oschina.net/Tsher2015/blog/528995

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!