1. 程式人生 > >Oracle根據欄位值找到表名和列名

Oracle根據欄位值找到表名和列名

方法1:
--Oracle 根據欄位值查詢其所在的表、欄位  
DECLARE  
CURSOR cur_query IS   
  SELECT table_name, column_name, data_type FROM user_tab_columns;   
  a NUMBER;   
  sql_hard VARCHAR2(2000);   
  vv NUMBER;  
BEGIN   
  FOR rec1 IN cur_query LOOP  
  a:=0;   
  IF rec1.data_type ='VARCHAR2' OR rec1.data_type='CHAR' THEN   
  a :
= 1; END IF; IF a>0 THEN sql_hard := ''; sql_hard := 'SELECT count(*) FROM '|| rec1.table_name ||' where ' ||rec1.column_name|| ' like''吳芳''';--欄位值 dbms_output.put_line(sql_hard); EXECUTE IMMEDIATE sql_hard INTO vv; IF vv > 0 THEN dbms_output.put_line('[欄位值所在的表.欄位]:[
'||rec1.table_name||'].['||rec1.column_name||']'); END IF; END IF; END LOOP; END;

方法2:

DECLARE  
CURSOR cur_query IS  
  SELECT table_name, column_name, data_type FROM user_tab_columns;  
  a NUMBER;  
  sql_hard VARCHAR2(2000);  
  vv NUMBER;  
BEGIN  
  FOR rec1 IN cur_query LOOP  
  a:
=0; IF rec1.data_type ='NUMBER' THEN a := 1; END IF; IF a>0 THEN sql_hard := ''; sql_hard := 'SELECT COUNT(*) FROM '|| rec1.table_name ||' WHERE ' ||rec1.column_name || '=123456';--欄位值 dbms_output.put_line(sql_hard); EXECUTE IMMEDIATE sql_hard INTO vv; IF vv > 0 THEN dbms_output.put_line('[欄位值所在的表.欄位]:['||rec1.table_name||'].['||rec1.column_name||']'); END IF; END IF; END LOOP; END;

SQLserver中如何實現

DECLARE @what varchar(800)  
SET @what='123456' --要搜尋的字串   
  
  
DECLARE @sql varchar(8000)   
  
  
DECLARE TableCursor CURSOR LOCAL FOR  
SELECT sql='IF EXISTS ( SELECT 1 FROM ['+o.name+']   
WHERE ['+c.name+'] LIKE ''%'[email protected]+'%'' ) PRINT ''[欄位值所在的表.欄位]:['+o.name+'].['+c.name+']'''  
FROM syscolumns c JOIN sysobjects o ON c.id=o.id   
  
  
-- 175=char 56=int 可以查 select * from sys.types   
WHERE o.xtype='U' AND c.status>=0 AND c.xusertype IN (175, 239, 231, 167 )   
OPEN TableCursor   
FETCH NEXT FROM TableCursor INTO @sql  
WHILE @@FETCH_STATUS=0  
BEGIN  
    EXEC( @sql )  
    FETCH NEXT FROM TableCursor INTO @sql  
END   
CLOSE TableCursor   
-- 刪除遊標引用  
DEALLOCATE TableCursor   

本位轉載自:複製到這裡只是怕連線失效哦!!!

http://blog.csdn.net/yangyi22/article/details/7555662

相關推薦

Oracle根據找到列名

方法1: --Oracle 根據欄位值查詢其所在的表、欄位 DECLARE CURSOR cur_query IS SELECT table_name, column_name, data_type FROM user_tab_columns;

Oracle 根據查詢其所在的(只有資訊,連型別都不知道)

今天一哥們求助,oracle的我只知道ziduan欄位的值,連型別,大小設定全都不知道,如何查詢到該欄位所在的表,以及該欄位名。以下是我編寫的實際指令碼: 1.假設該欄位是varchar2或者char型別 DECLARE CURSOR cur_hh IS SELECT tabl

查詢資料庫中帶有某個的所有

mysql資料庫查詢帶有某個欄位的所有表名 SELECT * FROM information_schema.columns WHERE column_name='column_name'; ora

根據某一指定的列名及列來向前或向後N條查相關列的SQL自定義標量函式

有時需要根據某一指定的列的值來向前或向後N條查相關的列值,那麼用此SQL自定義標量值函式可以取得相關的SQL語句: ALTER FUNCTION GetPreviousNextCodeSql (  @tableName varchar(50),  @codeFieldNam

mysql 在修改新增(alter table add column 或者 modify column)且帶unique時提示duplicate entry for key的原因以及解決方案

今天在公司臨時維護一張表時,我作了一個小動作,新增一個欄位,並且設定為unique時,盡然無法新增欄位,我當時就納悶了,寫了這麼多sql,這麼奇怪的問題還是第一次見,不多說,直接看圖 【我的sql檔案如下】 【執行sql語句報錯:alter table smart_

Sqlserver根據查詢表根據查詢表的幾個方法

-------------Sqlserver根據欄位名稱查詢表(多個欄位值),例如查詢欄位名包含 ibatch和cbatch 的表 SELECT *FROM( SELECT t2.name  FROM syscolumns t1,sysobjects t2 WHERE t1

全庫檢索包含某個所在的列.

查詢整個資料庫中某個特定值所在的表和欄位的方法 當資料庫做的太龐大的時候,難免會出現忘記哪個值會存入哪個表的情況,於是在網上找到的如下解決辦法。 通過做一個儲存過程,只需要傳入一個想要查詢的值,即可查詢出這個值所在的表和欄位名。前提是要將這個儲存過程放在所查詢的資料庫。 CREATE PROCEDURE

Oracle AWS Redshift 獲取 資料庫所有列名

Oracle select table_name from user_tables where table_name like '%plnsm%'; select OWNER, TABLE_NAME, COLUMN_NAME from all_tab_columns where COLU

oracle修改列名的多種方式

重命名錶 對於已存在的表,還可以修改其名稱。重命名錶有兩種語法形式,一種 是使用ALTER TABLE語句,語法如下: ALTER TABLE table_name RENAME TO new_table_name; 另一種是直接使用RENAME語句,語法如下:   RE

oracle資料庫中欄的型別blobclob是什麼兩者的區別

最近在觀察一個系統時,發現其資料庫的欄位上有一種CLOB型別,特地搜尋整理後,明白。 BLOB和CLOB屬於大欄位型別,BLOB是二進位制儲存,CLOB是可直接儲存文字。兩者可相互轉換,也可以直接用

MySQL 獲取資料庫中的所有列名

sql語句在MySQL獲取資料庫裡的所有表名: select table_name from information_schema.tables where table_schema='資料庫名' sql語句在MySQL獲取資料庫表的所有列名: select column_name

oracle 一個新增多個根據條件重新整理

2. Oracleupdate TA a set(name, remark)=(select b.name, b.remark from TB b where b.id=a.id)   where exists(select 1 from TB b where b.id=a.

ORACLE——在所有中查詢某個字串並輸出

什麼都不想說,直接上乾貨 declare v_Sql varchar2(2000); v_count number; begin for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME from

Hibernate JPA 根據Java類獲取對應資料庫的名稱

專案中使用 Hibernate JPA, 需求是根據 Entity的java 類,來獲取所有的對應的資料庫欄位。 直接上程式碼。 使用者類,對應資料庫的user表 import org.hibernate.validator.constraints.NotBlank;

SQL Server 動態行轉列(引數化、分組列、行轉列

一.本文所涉及的內容(Contents) 二.背景(Contexts)   其實行轉列並不是一個什麼新鮮的話題了,甚至已經被大家說到爛了,網上的很多例子多多少少都有些問題,所以我希望能讓大家快速的看到執行的效果,所以在動態列的基礎上再把表、分組欄位、行轉列欄位、值這四個行轉列固定需要的值變成真正意義的

oracle變為大寫

begin for t in (select table_name tn from user_tables where table_name <> upper(table_name)) loop begin for c in (select column_

ArcGIS屬性根據條件賦

問題描述:現需要根據某一欄位的不同值對另外一欄位賦值 示例1: Expression: Reclass(!WELL_YIELD!) Code Block: def Reclass(WellYi

sql根據某一的不同關聯不同的(一)

一.資料庫資料資料 deed_records sport_records match_ticket_record 二.sql語句 SELECT d.integral , CASE WHEN d.deed_type=1 THEN (SELECT s.user_id FR

mysql的//是否區分大小寫

1、mysql預設情況下是否區分大小寫,使用show Variables like '%table_names'檢視lower_case_table_names的值,0代表區分,1代表不區分。 2、mysql對於型別為varchar資料預設不區分大小寫,但如果該欄位以“*_bin”編碼的話會使mysql對其區

mysql資料庫批量修改根據關聯資料修改

主要場景應用於A表的欄位cust_id是B表裡面的主鍵ID,根據已經A表中存有的cust_code值做關聯通步B表的cust_id儲存到A表中cust_id中,使用主鍵索引查詢提高查詢效率 UPDATE crm_cust_message_detail d SET d.cus