日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

cad模糊查询符号_万能模糊查询SQL

發布時間:2025/3/19 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cad模糊查询符号_万能模糊查询SQL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

******************************************************************

* 功能:萬能模糊查詢SQL

* 時間:2015/1/30 16:00:22

* 開發者:流浪的菜鳥

* 需求來源:要查詢系統數據庫中,有某些特殊字段是否存在。

* 實現思路

1.為了防止后期,需求變更,自己打算寫一個萬能通用的SQL,只需要給出 關鍵字,就能查詢到當前數據庫中所有關鍵字存在的地方

2.第一步,要循環當前數據中所有的表,當然想到了用系統表和游標。同時在循環表的時候,嵌套循環當前表的結構,

所以必須會用到兩個嵌套的游標來完成實現

3.第二步,查詢相應的數據庫文檔,找到相應能快速查詢到所有表,所有列的系統表

4.第三步,根據實現的思路,一步步的去實現完成

* 最終導出生成對應的報表,報表能看到,當前數據庫中有哪些表,哪個字段的值包含了當前特殊字段

* 課外資料(必須要知道的那些潛規則)

1. sql 常見的系統表,以及系統表對應的功能查詢

select * from sys.all_objects where type='u' ?---查詢當前數據庫中所有的表,其中是屬于用戶創建的表,不是系統表

select * from ?information_schema.columns ? ? ---查詢當前表中所有列,以及列的屬性(比如列的名稱,列的數據類型,后面有用到)

2. 游標的工作執行原理,以及相關的特性

3.存儲過程,以及sql字符串的拼接操作

4.調試使用好 print 關鍵字,打印出來相應的sql語句來驗證自己的思路和結果是否正確

*注意事項

1.自己所寫的程序必須要嚴格優化你的SQL,我一開始沒有優化,導致執行我的這個sql的時候數據庫出現相應的異常,讓我好蛋疼,于是我猜想

異常:由于這個系統有1589張表,循環表就循環1589次,然后再1589次當中還得循環每個表的字段(平均每個表有35個字段),

那算起來大概要循環五萬次,然后這五萬次循環的時候 還得去模糊拼接查詢一次數據庫,估計游標受不了,或者內存不足,具體原因待查

2.細節注意的地方: exec sp_executesql 其中這個地方要注意,執行這個的時候 它拼接生成的sql的標量聲明必須是 nvarchar,不能是varchar,

這一點比較惡心,我這里就是少寫了個n,導致一直報錯。

3.循環所有的表,所有的字段,邏輯是這樣的,但是實際業務沒必要去這樣做,這里就做好優化的相關代碼

比如我這里優化了兩個:

第一. 排除了數據庫中表的數據是0的,也就是說當前表中沒有任何數據,沒有數據的我就沒有必要去循環當前表的結構和模糊查詢了

第二. 模糊查詢肯定是針對表中字段是 字符串類型的,如果不是字符串類型的(text,varchar,nvarchar等),當然沒必要去循環模糊查詢了

第三. 后期還需要優化的代碼

******************************************************************/

declare @QueryKeyword nvarchar(2000)

set @QueryKeyword='關鍵字'

declare @tblname nvarchar(200) --表名稱

declare @tablenum int ---獲取執行查詢表中是否有數據 返回的結果 只要大于1 代表 這個表有數據,就進行列的循環讀取和模糊匹配

declare @tablestr nvarchar(4000)

declare tbl_cursor cursor for select name from sys.all_objects where type='u'

---定義表的游標,并且指定游標的循環范圍 當前數據庫的所有表(所有用戶表)

---獲取當前數據庫中的表

open tbl_cursor --打開游標

fetch next from tbl_cursor ?INTO @tblname --游標開始循環讀取,一條條讀取,讀取每一條的時候 將讀到的表名稱 賦值給標量@tblname

--將當前游標讀取到的表名稱 保存到標量中,給下面的循環使用 每一次循環得到表名

while @@FETCH_STATUS = 0 ---只要讀到數據,就循環執行下面的操作

begin

----開始 排除沒有數據的表 (優化)

set @tablestr='select @b=count(*) from '+@tblname

exec sp_executesql @tablestr,N'@b int output',@tablenum output ---執行當前的數據結果集,有數據的表,才能進行表結構中每個字段的循環

if(@tablenum>0) --得到有數據的表

begin

declare @str nvarchar(4000)

declare @colvaluesql nvarchar(4000)

set @str='' --開始拼接 表中的字段

declare @data_typevalue nvarchar(200)

declare @num int

declare @colname nvarchar(200) ---表中列的標量

declare col_cursor cursor for ?select column_name,data_type from information_schema.columns where table_name= @tblname order by column_name

--定義列的游標,循環的范圍是當前表中的所有列,以及列相應的數據類型

--如果不是字符串類型的 都忽略掉

open col_cursor ?--打開游標

fetch next from col_cursor into @colname,@data_typevalue --將列游標讀到的列 放到變量中

while @@FETCH_STATUS = 0

begin

---初步判斷 數據類型符合的有 nvarchar ntext 兩種數據類型的 符合

--當只有數據類型符合規則的時候 才生成對應模糊查詢的sql

if(@data_typevalue='nvarchar' or @data_typevalue='ntext')

begin

set @str='select @a=count(*) from '+@tblname+' where '+@colname+' like ''%'+@QueryKeyword+'%'''

set @colvaluesql='select '+@colname+',* from '+@tblname+' where '+@colname+' like ''%'+@QueryKeyword+'%'''

exec sp_executesql @str,N'@a int output',@num output ---執行模糊查詢 返回模糊查詢的結果

if(@num>0) ---如果模糊查詢的結果 有值 那么就說明該表這的這個字段中包括這個 關鍵字

begin

-------這里 可以進行相應的擴展,比如生成批量的查詢 修改,刪除語句,并且執行

-------擴展區

-------擴展區

print @colvaluesql ?---打印出 符合模糊查詢的表 生成相應的sql

exec(@colvaluesql) ?----執行 sql

end

end

fetch next from col_cursor into @colname,@data_typevalue

END

close col_cursor ? ?---關閉列的游標

deallocate col_cursor ?--釋放列的游標

end

------結束 排除沒有數據的表 (優化)

fetch next from tbl_cursor into @tblname ?--讓表的游標繼續讀下一條數據

End

close tbl_cursor ?--關閉游標

deallocate tbl_cursor ? --釋放游標資源

總結

以上是生活随笔為你收集整理的cad模糊查询符号_万能模糊查询SQL的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人看人人射 | 麻豆视频软件 | 99riav国产精品视频 | 亚洲欧美激情小说另类 | 国产成人久久精品流白浆 | 久久精品免费在线 | 免费看片色 | 精品96久久久久久中文字幕无 | 欧美日韩高清在线 | 亚洲精品在线观看av | 97成网| 欧美18av | 久久男女视频 | 国产精品久久久久久久av福利 | www.日韩视频 | 40一50一60老女人毛片 | 亚洲乱色熟女一区二区 | av黄色一级片 | 国产精品一区二区三区在线免费观看 | 国产黄色网址在线观看 | 熟女人妇 成熟妇女系列视频 | 中文字幕国产在线 | av免费不卡| 毛片福利 | 叶爱在线 | 亚洲区精品 | 性感美女被爆操 | 日本伦理一区二区 | 国产色视频在线 | 欧美日韩精品一区 | 乱妇乱女熟妇熟女网站 | 国产黄站 | 日韩少妇视频 | 亚洲熟女少妇一区 | 91视频污在线观看 | 奇米影视第4色 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 日本五十路女优 | 亚洲av乱码一区二区 | 在线观看欧美成人 | 国产成人精品自拍 | 亚洲啪av永久无码精品放毛片 | 一级黄色片毛片 | 日本一区视频在线播放 | 成av人在线 | 久久五| 顶臀精品视频www | japanese在线观看 | 无码日韩人妻精品久久蜜桃 | 99人妻碰碰碰久久久久禁片 | 日韩av在线一区二区三区 | 伊人黄网| 国产精品果冻传媒潘 | 国产一级二级视频 | 色网站在线免费观看 | 国产嗷嗷叫| 夜夜夜操操操 | 国产又黄又湿 | 中文字幕av观看 | 日韩欧美成人一区 | 狠狠操一区二区 | 成年性生交大片免费看 | 丰满岳乱妇一区二区 | www.免费av| www.亚洲天堂.com | 手机看片1024在线 | 韩国伦理在线视频 | 男人深夜影院 | 激情福利社 | 极品色av | 成年人午夜免费视频 | 日韩毛片网 | 亚洲精品区 | 国模私拍在线 | 在线国产欧美 | 久久99中文字幕 | 久久婷婷五月国产色综合激情 | 久久成人乱码欧美精品一区二区 | ass精品国模裸体欣赏pics | 久久精品黄aa片一区二区三区 | 国产精品2020 | 国产精品亚洲色图 | 国产性猛交96 | www.69pao.com| 国产人久久人人人人爽 | 激情片网站| 久久a毛片 | 日本免费高清一区二区 | 亚洲国产www | 妖精视频一区二区 | 欧美成人性生活片 | 天天摸天天操天天爽 | 日本激情视频在线观看 | 久久五月天综合 | 欧美精品网 | 操一操 | 91精品国自产在线偷拍蜜桃 | 天天天操操操 | 日韩亚洲欧美一区二区三区 |