要查的内容为 :YYY是某一列的数据中的一个,不是列名
追答我给你的例子,就是这个意思啊
追问你能解释一下吗?我刚学sql语句
我现在知道表中有一列的数据中有223344这个数,我该怎么把这个数所在的列找出来?
追答是数字还是字符,如果是字符,要不要like
追问是数字
追答select 'SELECT * FROM XXX WHERE '||COLUMN_NAME|| ' = 223344;' from cols where datA_type = 'NUMBER' AND TABLE_NAME = 'XXX'
数据类型那儿可能不一定是NUMBER,你自己看看。
确实是字符串。另外有个问题,你这里的cols是什么作用?能这样写吗?大写的COLUMN两边加竖线表示什么意思?
追答|| 是oracle 中 字符 拼接的 , 和sqlserver 的 字符 + 一样
cols 是当前用户的 表字段 视图。
我这是给你拼了一个 查询当前表的各个字段 的 查询 语句。
你执行一下,就知道什么意思了 !
结果出来是 'SELECT * FROM XXX WHERE '| 这段字符
追答你到底是字符列,还是数字列?
如果是数字列的话,用第二个语法,出来的是:
SELECT * FROM XXX WHERE 字段名1 = 223344;
SELECT * FROM XXX WHERE 字段名2 = 223344;
SELECT * FROM XXX WHERE 字段名n = 223344;
多个这样的sql语句,你用这个一查,就知道哪个列有数据了啊
奇怪,我输入select data_type from cols where table_name='表名' 居然没结果出来
是字符列
追答一般来说:表名,应该大写
select 'SELECT * FROM XXX WHERE '||COLUMN_NAME|| ' LIKE ''%YYY%'';' from cols where datA_type = 'VARCHAR2' AND TABLE_NAME = 'XXX'
或者:
select 'SELECT * FROM XXX WHERE '||COLUMN_NAME|| ' = ''YYY'';' from cols where datA_type = 'VARCHAR2' AND TABLE_NAME = 'XXX'