转自:http://blog.sina.com.cn/s/blog_af26e333010194ht.html 最近修改oracle触发器,在过程中遇到两个问题: select lastname from hrmresource where id in (waigaunyanshourens); 此sql只要功能:根据id 到人力资源表找相应的人名: 此处waigaunyanshourens 是一个存储外观验收人变量:原只是一个存储外观验收人的id变量,现在界面要求外观验收人可以多选,如(41,
Oracle数据库中字符串拼接的实现 select count() from THT_HTFKJL where ht=1: 假如结果为:31.例如上面例子想要给结果拼接字符串有二种实现方法,第一种使用’||’拼接,相当于’+’字符.select ‘第’||count()||’次付款’ from THT_HTFKJL where ht=1; 查询结果为:第3次付款2.使用concat函数进行字符串拼接,但是concat(char1,char2)只能拼接2个参数,如果想要多个字符串拼接需要内部再次使
备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id, (select wmsys.wm_concat(replace(st1.illegal, ',', ',')) from ts_acc_standards st1 group by st1.acc_id) as illegal_names form ts_info info where info
错误提示:oracle在toad中执行一段sql语句时,出现错误‘ORA-01704:字符串文字太长’.如下图: 原因:一般为包含有对CLOB字段的数据操作.如果CLOB字段的内容非常大的时候,会导致SQL语句过长.隐式转换:oracle默认把字符串转换成varchar2类型,而这个字符串的长度,又比4000大,所以会报ora-01704错误.说得通俗一点,就是两个单引号之间的字符不能超过4000. 解决办法:使用PL/SQL语法,采取绑定变量的方式解决,而不是直接拼接SQL DECLARE c