最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

oracle關聯(lián)查詢報invalid number錯誤的解決方法

 更新時間:2024年09月30日 10:21:30   作者:java-zh  
這篇文章主要介紹了oracle關聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下

出現(xiàn)問題的原因和背景

oracle進行關聯(lián)查詢的時候因為字段存在多個用逗號切割的id,導致查詢的過程中報無效數(shù)字或非法數(shù)字

問題復現(xiàn)1

新建表A

CREATE TABLE  "A" (
  id NUMBER NOT NULL,
  name VARCHAR2(255 BYTE)
)
 
INSERT INTO "A" VALUES ('1', '上海');
INSERT INTO "A" VALUES ('2', '北京');
INSERT INTO "A" VALUES ('3', '廣州');
INSERT INTO "A" VALUES ('4', '深圳');

新建表B

 
CREATE TABLE  "B" (
  id NUMBER NOT NULL,
  aid VARCHAR2(255 BYTE)
)
 
INSERT INTO "B" VALUES ('1', '1,2,3');
INSERT INTO "B" VALUES ('2', '1,2');
INSERT INTO "B" VALUES ('3', '1,2,3,4');

問題復現(xiàn)2

select * from A where id in (select aid from B where id = 3)

產(chǎn)生的原因:因為查詢過程中,多個id放在了一個字段,這個字段不止有數(shù)字也有逗號,id是數(shù)字類型,所以數(shù)據(jù)庫識別以后直接會報非法數(shù)字。

解決方法

先將子查詢轉成多行

	WITH 
    split_string AS (
		        SELECT   (select aid from B  where id = 3)AS string FROM dual
    )
SELECT 
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) AS aid
FROM 
    split_string
CONNECT BY
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) IS NOT NULL;

再次查詢A表數(shù)據(jù)

 select * from A  where id  in (	WITH 
    split_string AS (
		        SELECT   (select aid from B  where id = 3)AS string FROM dual
    )
SELECT 
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) AS aid
FROM 
    split_string
CONNECT BY
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) IS NOT NULL)

將A表的名稱轉成一行

select LISTAGG(name,',') WITHIN GROUP (ORDER BY name) 關聯(lián)流程 from A where  id in (	WITH 
    split_string AS (
        SELECT   (select aid from B  where id = 3)AS string FROM dual
    )
SELECT 
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) AS split_value
FROM 
    split_string
CONNECT BY
    REGEXP_SUBSTR(string, '[^,]+', 1, LEVEL) IS NOT NULL) 

以上就是oracle關聯(lián)查詢報invalid number錯誤的解決方法的詳細內(nèi)容,更多關于oracle報invalid number錯誤的資料請關注腳本之家其它相關文章!

相關文章

最新評論

长白| 盖州市| 左贡县| 德化县| 和平区| 扎鲁特旗| 海宁市| 大丰市| 景洪市| 康定县| 林州市| 蕲春县| 文安县| 青龙| 姜堰市| 恩平市| 隆安县| 和平区| 镇沅| 迭部县| 泌阳县| 离岛区| 兴安盟| 尚义县| 唐海县| 通榆县| 玉山县| 寿宁县| 龙游县| 岳阳市| 浦江县| 车致| 临朐县| 汝南县| 棋牌| 望谟县| 鄯善县| 晋江市| 喀什市| 合川市| 黄浦区|