oracle聚合函式wmsys.wm_concat超長問題記錄
原文連結:https://blog.csdn.net/zym1550974736/article/details/69400400
今天在專案中執行sql時遇到一個問題,執行
select wmsys.wm_concat(p_codes) codes from t_rel where id='123'
1
這樣一個語句時報這樣的錯誤:
numeric or value error: character string buffer too small(數字或值錯誤:字元緩衝區太小)
經查明,wm_concat函式拼接的字串不能超過4000位元組,否則會報錯。
解決方案:
更改sql如下:
select XMLAGG(XMLELEMENT(E, p_codes || ',')).EXTRACT('//text()').getclobval() codes from t_rel where vote_id='123'
1
注意,該sql拼接字串末尾會多一個,符號,可用substr函式或在後臺截掉。
!
相關推薦
oracle聚合函式wmsys.wm_concat超長問題記錄
原文連結:https://blog.csdn.net/zym1550974736/article/details/69400400 今天在專案中執行sql時遇到一個問題,執行 select wmsys.wm_concat(p_codes) codes from t_rel where id=
oracle行轉列函式WMSYS.WM_CONCAT用法
select t.rank, t.Name from t_menu_item t; 10 CLARK 10 KING 10 MILLER 20 ADAMS 20 FORD 20 JONES 20 SCOTT 20 SMITH 30 ALLEN 30 BLAKE 30 JAMES 30 MARTIN 30 T
oracle聚合函式及行專列,pivot rollup cube
1、原始資料 --方法-: --以單位分組,計算每類特殊情況的合計以及按照單位的小計數 with a as (SELECT b.szfz, &nbs
oracle XE解決WMSYS.WM_CONCAT()不可用的情況
在自己電腦上安裝了個oracle XE的版本,用著挺方便的,對開發而言沒有任何影響,但是就在我將伺服器上的資料庫備份還原到本機之後,系統訪問的過程中報錯,在PL/SQL中執行後臺的SQL語句,系統提示WMSYS.WM_CONCAT識別符號無效。最終,找到一個可行的辦法解決這個問題
oracle 聚合函式 LISTAGG ,將多行結果合併成一行
LISTAGG(列名,' 分割符號') oracle 11g 以上的版本才有的一個將指定列名的多行查詢結果,用 指定的分割符號 合併成一行顯示: 例如: 表原始資料: 需求:將 mb1_Transport_License_list 表中的資料,根據 transport
Oracle聚合函式學習
參考地址:https://blog.csdn.net/kancy110/article/details/74616909 https://blog.csdn.net/sinat_35626559/article/details/72621695 SELECT t.
分組連線欄位函式WMSYS.WM_CONCAT的使用
一、語法 WMSYS.WM_CONCAT(要連線的欄位) 該函式返回來自同一個分組的指定欄位的非NULL值的連線起來字串 二、用法 準備資料如下: 1、以c
oracle wmsys.wm_concat函式的用法
今天才發現了wmsys.wm_concat這個有趣有用的函式,它的作用是以’,’連結字元。 例子如下: SQL> create table idtable (id number,name varchar2(30)); Table created S
oracle連線字串函式,wmsys.wm_concat和LISTAGG
一、簡單介紹 最近專案需要進行行轉列,經過上網查資料發現了wmsys.wm_concat和LISTAGG函式,在這分享給大家 wmsys.wm_concat是oracle 10g推出的,用來連線字串,LISTAGG是oracle 11g推出的,它的作用和wmsys.wm_
Oracle學習筆記:wm_concat函式合併欄位
在Oracle中使用wm_concat(column)可以實現欄位的分組合並,逗號分隔。 例如,現有表temp_cwh_test: -- 建立臨時表 create table temp_cwh_test ( u_id varchar(10), goods varchar(32
oracle的函式wm_concat字元超過4000的處理辦法
當執行sql: select wm_concat(colA) as colA from tableA 提示: java.sql.SQLException: ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小 ORA-06512: 在 "WMSYS.WM_CONCAT_
oracle null值 :計算與聚合函式
表資料person_info id name age 1 qq 23 2 ee &nb
[oracle] count()函式使用錯誤欄位導致的查詢失敗(聚合函式聚合欄位與分組欄位不一致)
一 錯誤的SQL語句(原始的,格式是直接從word中拷貝的,存在多個錯誤): select to_char(t.fbsj, 'YYYY') as a, count(t.fbsj) from ( select fbsj from ods_t_ky_lw where
Oracle 單行函式和多行函式(組函式、聚合函式)
Oracle中函式主要分為單行函式和多行函式 一、特點: 單行函式可以多層巢狀,多行函式(組函式)只能巢狀兩層(多層巢狀沒有意義)。 多行函式通常用於整表或分組統計查詢中 每次處理完一條記錄返回一個結果 二、常見的單行函式(數量比較多): lower
Oracle 自定義聚合函式
create or replace type str_concat_type as object ( cat_string varchar2(4000), static function ODCIAggregateInitialize(cs_ctx In Out str_concat_
Oracle-24-聚合函式&group by的使用
一、聚合函式 1.count——返回找到的記錄數; 2.min——返回一個數字列或計算列的最小值; 3.max——返回一個數字列或計算列的最大值; 4.sum——返回一個數字列或計算列的綜合; 5.a
使用Listagg分析函式優化wmsys.wm_concat
在上週末優化班的時候一個朋友拿了一個SQL出來,讓我現場優化,因為當時太忙,我安排七年老師幫忙處理。跑得慢的SQL如下:with temp as (select sgd.detail_id id,
ORACLE中的自定義聚合函式(User-Defined Aggregate Functions)
聚合函式也叫分組函式,是對多行進行計算的一種函式,比如SUM、COUNT、AVG、MAX、MIN等等。Oracle中為了增強擴充套件性,提供了一個自定義聚合函式的介面,ODCIAggregate(),使用者可以用Oracle支援的各類程式語言(PLSQL、C、C++、JAVA
Java MyBatis 呼叫聚合函式查詢返回結果示例(記錄下來,方便不記得時檢視)
mybatis sql配置: <select id="queryFirstResult" resultType="string"> select max(code) as frist
oracle的數學函式和聚合函式
數學函式和聚合函式 avg() : 求平均值,計算並返回表示式的平均值 count() :統計數目,返回一個集合中的項數 max ():求最大值,返回表示式中的最大值 min(): 求最小值,返回表示式中的最小值 sum() :求和,計算並返回