oracle的神奇化学反应(行转列+获取表字段)

橘子+汽水=橘子汽水,∑(?Д?ノ)ノ好无聊!!!

火鸡+烤架=烤火鸡,?(´?`?)还不错.

wm_concat()+表字段查询=(?ω?)会是啥呢?



wm_concat()函数,该函数可以把列值以","号分隔,并显示成一行。例子如下:

我有一个超级大的美食表CHINA_FOODS,里面包含了全国各地的美食,从地锅鸡、羊盘肠到红烧肉、臭豆腐...

今天加班写博客,写到这里的时候我感觉肥肠的饿,想点个外卖,于是想从美食表里面找个好吃的下单:

为了节省时间来写博客,我决定把下单和付款的重任交给我的小女朋友来执行。

对于我的这份将生命托付给她的信任,小女朋友表示受宠若惊并坚定的拒绝了我,因为懒癌晚期的她觉得截图没法直接复制到搜索框下单。

不过,事情还有转圜的余地,她表示如果我把截图改成字符串的形式的话,可以接受替我下单的请求。

“给我一秒钟!”我这样回复她。

一秒钟后,我写下了如下SQL

select wm_concat(food_name) from china_foods;

果断截图发送

什么情况,思索回忆...找到bug...打N遍电话反复承认不该发截图的错误...重新加回好友然后发送字符串类型的菜单。

这是要搞事情啊!为了吃的我先忍着,话说她怎么还懂全角半角这类的东西?

一秒钟后,我再次写下了如下SQL

--select wm_concat(food_name) from china_foods;
select replace(wm_concat(food_name),‘,‘,‘,‘) food_name from china_foods;

copy结果,发送

接下来的进展很顺利,小小的为难了我一下之后,小女朋友乖乖的给我去下单了,她果然还是爱我的(*^▽^*)

趁着外卖配送的时候,我又从A+V的角度小小的研究了一下wm_concat(),果然解锁了一个新姿势

--查询表A有哪些字段
SELECT column_name FROM all_tab_columns t WHERE t.OWNER=‘CMS_UAT‘ AND t.TABLE_NAME=‘COMPANY_TRF_LNS_F‘;

--将A表拥有的字段组装成字符串,代替传统的select * from TBL_A;
SELECT wm_concat(column_name) FROM all_tab_columns t WHERE t.OWNER=‘CMS_UAT‘ AND t.TABLE_NAME=‘COMPANY_TRF_LNS_F‘;

这样子的话,不管是写insert语句还是多字段的查询语句都很方便啊!

那么,我的外卖到了没有?

小女朋友:“那个...订单选错地址,外卖全送我这来了,要不我等你一起吃...”

写了这么多,我就想问下教训小女朋友用什么姿势好?

时间: 2024-10-05 23:46:43

oracle的神奇化学反应(行转列+获取表字段)的相关文章

如何在Sql2008中获取表字段属性和注释?

如何在Sql2008中获取表字段属性和注释? select b.[value] from sys.columns a left join sys.extended_properties b on a.object_id=b.major_id and a.column_id=b.minor_id inner join sysobjects c on a.column_id=c.id and a.[name]='列名' and c.[name]='表名' SELECT 表名=case when a.

解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,mybatis 在执行 sql 时会报错,如果表中有 Blob.Clob 类型在转 json 是也会报错,而且我这里也需要将这几种类型都转为 String 类型到前端. long 类型 sql 报错: Blob/Clob 转 json 报错: 解决方案: 自定义 typeHandle 来统一处理数据库这些特殊的字

net 对mssql 的操作(备份,还原,获取表数据,获取表字段信息)

#region 数据库管理 /// <summary> /// 还原恢复数据库 /// </summary> /// <param name="FilePath">保存路径</param> /// <returns></returns> public bool DataRestore(string FilePath) { string[] Connection = ConfigHelper.GetAppSettin

sql获取表字段名、描述和类型

SELECT TableName = OBJECT_NAME(c.object_id), ColumnsName = c.name, Description = ex.value, ColumnType=st.name, Length=c.max_length FROM sys.columns c LEFT JOIN sys.extended_properties ex ON ex.major_id = c.object_id AND ex.minor_id = c.column_id AND

SQL SERVER 获取表字段信息

CREATE PROCEDURE [Common].[ProcLoadColumnInfo] @inObjectName sysname AS BEGIN SELECT  TableCatalog = DB_NAME() , TableSchema = SCHEMA_NAME(C.schema_id) , TableName = D.name , ColumnName = A.name , ColumnPosition = A.colorder , DataType = B.name , Max

Oracle行转列、列转行的Sql语句总结(转)

多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 首先让我们来看看这个神奇的函数wm_concat(列名),该函数可以把列值以",&quo

Hbase 098.4中使用新API通过Get列表获取多行的列值

在Hbase0.98.4中通过Get列表的方式获取Hbase中多行的列值,本来想使用KeyValue类来处理的,结果发现该类的getRow()和getValue()的两个方法已经废弃了,最终使用新API中的Cell接口来实现,如下: Hbase中测试表中数据如下: hbase(main):005:0> scan 'testtable' ROW                      COLUMN+CELL                                             

Oracle 行转列、列转行 的Sql语句总结

参考文章:http://blog.csdn.net/tianlesoftware/article/details/4704858 多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_user select id||username str from app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union

Oracle行转列、列转行的Sql语句总结

多行转字符串 这个比较简单,用||或concat函数可以实现 ?SQL Code? 12 ? select?concat(id,username)?str?from?app_userselect?id||username?str?from?app_user 字符串转多列 实际上就是拆分字符串的问题,可以使用 substr.instr.regexp_substr函数方式 字符串转多行 使用union all函数等方式 wm_concat函数 首先让我们来看看这个神奇的函数wm_concat(列名)