一个比较笨的全文搜索的例子(分析结构用)-模糊查找
生活随笔
收集整理的這篇文章主要介紹了
一个比较笨的全文搜索的例子(分析结构用)-模糊查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1
2
3
4 --在所有的char類型的列中模糊查找某個值。
5 --**注意預先切換到當前的數據庫中。
6 DECLARE @TABLE_CATALOG NVARCHAR(MAX)--數據庫名
7 ,@TABLE_SCHEMA NVARCHAR(MAX)--架構名
8 ,@TABLE_NAME NVARCHAR(MAX)--表名
9 ,@COLUMN_NAME NVARCHAR(MAX)--列名
10 ,@SQL NVARCHAR(MAX)--動態sql語句
11 ,@find_char nvarchar(max)--查找的內容變量
12 --*********************************************************************************
13 set @find_char='1月22日支辦公費、車修、過路費、宿費等款'--輸入查找的內容
14 --*********************************************************************************
15 declare @t table (TABLE_CATALOG NVARCHAR(MAX)
16 ,TABLE_SCHEMA NVARCHAR(MAX)
17 ,TABLE_NAME NVARCHAR(MAX)
18 ,COLUMN_NAME NVARCHAR(MAX))--定義表變量
19 DECLARE C1 CURSOR FOR--定義游標,從INFORMATION_SCHEMA.COLUMNS和INFORMATION_SCHEMA.TABLES兩個系統視圖中獲取表和字段的信息,用于下面構建動態sql語句
20 SELECT A.TABLE_CATALOG
21 ,A.TABLE_SCHEMA
22 ,A.TABLE_NAME
23 ,A.COLUMN_NAME
24 FROM INFORMATION_SCHEMA.COLUMNS A--注意在這里修改數據庫名稱
25 JOIN INFORMATION_SCHEMA.TABLES B--注意在這里修改數據庫名稱
26 ON A.TABLE_CATALOG=B.TABLE_CATALOG
27 AND A.TABLE_SCHEMA=B.TABLE_SCHEMA
28 AND A.TABLE_NAME=B.TABLE_NAME
29 WHERE B.TABLE_TYPE='BASE TABLE'--僅僅查詢表,不包括視圖,可根據實際情況修改
30 AND
31 A.TABLE_NAME IN
32 (select a.name--,b.rowcnt--,object_name(b.id),a.id
33 from sysobjects a join sysindexes b
34 on a.id=b.id
35 where a.xtype='u' and b.indid<2
36 --and a.name like '%zy%'--限定表的名稱
37 --and rowcnt <=10000--限定記錄條數
38 )
39 AND
40 (DATA_TYPE LIKE N'%CHAR' or DATA_TYPE like N'%text')--僅僅查找CHAR類型的列CHAR,VARCHAR,NCHAR,NVARCHAR四種情況,可根據實際情況修改
41
42 OPEN C1
43 FETCH NEXT FROM C1 INTO @TABLE_CATALOG
44 ,@TABLE_SCHEMA
45 ,@TABLE_NAME
46 ,@COLUMN_NAME
47 WHILE @@FETCH_STATUS=0
48 BEGIN
49 SET @SQL=
50 'IF EXISTS (SELECT ['+@COLUMN_NAME+'] FROM ['+@TABLE_CATALOG+'].['+@TABLE_SCHEMA+'].['
51 +@TABLE_NAME+'] WHERE ['+@COLUMN_NAME+'] like ''%'+@find_char+'%'')'--模糊查找
52 +'print ''select * from ['' + @TABLE_CATALOG+''].['' + @TABLE_SCHEMA+''].['' + @TABLE_NAME + ''] where ['' + @COLUMN_NAME + ''] like %''+@find_char+''%'''--構建動態sql語句,生成可以直接查詢的語句。
53 EXEC SP_EXECUTESQL @SQL--執行動態sql語句
54 ,N'@TABLE_CATALOG NVARCHAR(MAX) OUT
55 ,@TABLE_SCHEMA NVARCHAR(MAX) OUT
56 ,@TABLE_NAME NVARCHAR(MAX) OUT
57 ,@COLUMN_NAME NVARCHAR(MAX) OUT
58 ,@find_char nvarchar(max) out'
59 ,@TABLE_CATALOG OUT
60 ,@TABLE_SCHEMA OUT
61 ,@TABLE_NAME OUT
62 ,@COLUMN_NAME OUT
63 ,@find_char out--生成的查詢語句仍然需要手工加上單引號
64 FETCH NEXT FROM C1 INTO @TABLE_CATALOG
65 ,@TABLE_SCHEMA
66 ,@TABLE_NAME
67 ,@COLUMN_NAME
68 END
69 CLOSE C1
70 DEALLOCATE C1
71
?
轉載于:https://www.cnblogs.com/bgbird/p/4959228.html
總結
以上是生活随笔為你收集整理的一个比较笨的全文搜索的例子(分析结构用)-模糊查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 邮储银行信用卡如何销卡?销卡要注意哪些方
- 下一篇: 十六进制,输出的时候怎样控制所输出字母的