有一個資料庫AA
資料表有3個,分別是A.B.C
而資料表裡又有很多欄位
要如何在這裡面找出有關鍵字"想要搜尋的名稱"的欄位資料
會有這問題是因為使用者在前台系統建立一個商品代號
建立之後系統會自動在"商品基本資料"."庫存資料"...等等的資料表中建立資料
但是我不清楚總共有哪些資料表有這筆資料,只能用這種方式去找
我在網路上有找到MS SQL的方法
http://wp.mlab.tw/?p=1552
http://blog.miniasp.com/post/2010/07/12/Search-all-columns-of-all-tables-in-a-database-for-a-keyword.aspx
但是這方法在ORACLE資料庫無法執行
PL-SQL變數宣告我找資料是把@取除,=用:=給值
但是裡面的QUOTENAME函數跟PARSENAME函數在PL-SQL裡不存在
網路上也沒找到類似功能的函數
請問有人知道別的方法或是這該如何修改嗎
試試看這個
作者是 2015/01/06 寫的
其實樓主的問題有點籠統.
1.要從三個TABLE 中找到資料.只要JOIN KEY 下對,應該用SELECT 就可以將資料找出來.(可以不必用到變數) SELECT A.A2,B.B2,C.C3 from AAA A , BBB B , CCC C WHERE A.A1=B.B1 AND B.2=C.1
2.一般在PL-SQL中會用到變數.就會用到 Stored Procedure .如果是用 Stored Procedure,可以參考這篇或另一篇.
3.定義變數用@開頭是 MS-SQL 特有的語法.在其他資料庫並不適用.
4.WHERE 條件中做字串包含方式的語法為 LIKE.例:
WHERE IMA01 LIKE 'ABC%'
- IMA01欄位中所有'ABC'開頭的資料.WHERE IMA01 LIKE '%ABC%'
- IMA01欄位中只要有'ABC'字串的資料(不管在IMA01中的那裡).
"實際上是有上百甚至上千個資料表, 而且每個資料表都有非常多個欄位"
如果是這樣的狀況, 我個人建議是
(1).要從前端程式下手, 由操作流程先找出您要的資料可能在那一些表格中,
(2).另外, 可以由商品代號的欄位名稱, 大概找出可能的表格 (除非定義欄名時沒有定義為有意義的欄名), 比如它可能叫 PART_NO, 如下:
select table_name from all_tab_columns where column_name like '%PART%NO%'
您可以透過這個方式縮小可能的表格與欄位範圍