中易网

oracle,两张表作关联,表1字段A,存在表2的B字段。但是A字段为varchar2,B字段为number型,要怎么转换查?

答案:4  悬赏:40  
解决时间 2021-03-22 07:53
oracle,两张表作关联,表1字段A,存在表2的B字段。但是A字段为varchar2,B字段为number型,要怎么转换查?
最佳答案
使用to_char()就行了。
你的语句这样写:
select表1.*,表2.*from 表1, 表2where表1.a = to_char(表2.b)
追问:那如果表1字段A,存储多个内容,中间用逗号隔开的。但是表2的B字段仅存一个内容的要怎么弄呢。
追答:使用like进行模糊查询。这样写:
select表1.*,表2.*from 表1, 表2where表1.a like '''%' || to_char(表2.b) || '%'''
全部回答
别人那搬来的
写function或procedure来分隔。
首先声明一个数组类型:
-- 字符串集合
TYPE Typ_Tab_Str IS TABLE OF VARCHAr(150) INDEX BY BINARY_INTEGER;
-- 写一个函数
CREATE OR REPLACE FUNCTION Fun_Stringtoarrary(P_Sourcestr IN VARCHAR2, -- 源字符串
P_Separator IN VARCHAR2, -- 分隔符
P_ArraryOUT Typ_Tab_Str -- 拆分后得到的数组
) RETURN NUMBER IS
n_Count NUMBER(6); -- 分隔符的个数
n_PosbNUMBER(6); -- 初始位置
n_PoseNUMBER(6); -- 分隔符的位置
BEGIN
-- 初始化
n_Count := 0;
n_Posb:= 1;
-- 非空校验
IF Prm_Sourcestr IS NULL OR Prm_Separator IS NULL THEN
RETURN - 1;
END IF;
LOOPn_Pose := Instr(Prm_Sourcestr, Prm_Separator, n_Posb, 1);
n_Count := n_Count + 1;
IF n_Pose = 0 THEN
Prm_Arrary(n_Count) := Substr(Prm_Sourcestr, n_Posb, Length(Prm_Sourcestr) - n_Posb + 1);
EXIT;
END IF;
Prm_Arrary(n_Count) := Rtrim(Ltrim(Substr(Prm_Sourcestr, n_Posb, n_Pose - n_Posb)));n_Posb := n_Pose + Length(Prm_Separator);
END LOOP;
RETURN n_Count;
EXCEPTION
WHEN OTHERS THEN
RETURN - 1;
END Fun_Stringtoarrary;
因为oracle本身就没有数组类型,我们是通过索引表来模拟数组,其实就是一个仿数组的结构。上面的函数完全正确,属于常用自定义功能函数。
select * from 表1 T1
left outer join 表2 T2 on T1.A=to_char(T2.b)

补充问题:
看你的需求,最终想查什么

如果表2(代码表)记录数少 用数组
如果表2(业务数据)记录多 用行列转换

前提都需要用存储过程,当然代码表记录少的话 用ASP JSP去匹配也行,还是要看你的需求
以上追问可以写成如下方法

select * from 表1 a join 表2 b on ','+a.A like '%,'+convert(varchar(50),b.B)+',%'

convert(varhcar(50),字段名)是指将字段转换成varchar类型
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
逸新空气净化器在哪里订购?
yoga70014isk如何设置u盘启动
小男孩学美术好还是学跆拳道好
男生对女生说么么哒,结果女生拒绝,又发现喜欢
如何降低论文的复制比
重庆万州五桥疾控中心在哪里投诉
孟氏族谱的由来
90年3 月21五行属什么?
想购买狮牌雪茄,当地没有怎么办?
个人独资企投者名义投资与个人独资企业名义投
孕妇的小腿肚子疼是什么原因引起的?已经有了
请问广州哪儿可以修理都澎的打火机
一岁半宝宝食谱阿,最近不肯吃饭怎么办,只肯
开平话早上好怎么说
我要去新加坡工作是做脚底按摩的现人在马来西
推荐资讯
决战江湖苍龙 装备洗练什么属性
香港电视剧(一屋老友记)全集百度云网盘?
以“我爱韩鑫喆”为藏头诗做一首诗,谢谢
(北京)八月十五整形优惠/打折活动?
普通市民该如何应对人民币贬值
烫头都有什么种类,例如锡纸
福建云霄动车到桂林有直达的吗
父亲生前欠儿子的钱,父亲死后继母应该还钱给
墨尔本鬼步结尾曲
物美大卖场 甘露园店怎么样
片仔癀面膜怎么代理的啊?
垃圾食品对孩子会造成哪些伤害?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?