欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

oracle關(guān)聯(lián)查詢報(bào)invalid number錯(cuò)誤的解決方法

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

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

oracle進(jìn)行關(guān)聯(lián)查詢的時(shí)候因?yàn)樽侄?strong>存在多個(gè)用逗號(hào)切割的id,導(dǎo)致查詢的過程中報(bào)無(wú)效數(shù)字或非法數(shù)字

問題復(fù)現(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');

問題復(fù)現(xiàn)2

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

產(chǎn)生的原因:因?yàn)椴樵冞^程中,多個(gè)id放在了一個(gè)字段,這個(gè)字段不止有數(shù)字也有逗號(hào),id是數(shù)字類型,所以數(shù)據(jù)庫(kù)識(shí)別以后直接會(huì)報(bào)非法數(shù)字。

解決方法

先將子查詢轉(zhuǎn)成多行

	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表的名稱轉(zhuǎn)成一行

select LISTAGG(name,',') WITHIN GROUP (ORDER BY name) 關(guān)聯(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關(guān)聯(lián)查詢報(bào)invalid number錯(cuò)誤的解決方法的詳細(xì)內(nèi)容,更多關(guān)于oracle報(bào)invalid number錯(cuò)誤的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論