在資料庫中查詢關鍵字
--建立儲存過程:sp_ValueSearch
CREATE PROC sp_ValueSearch
@value sql_variant, --要搜尋的資料
@precision bit=1
--1=僅根據sql_variant中的資料型別查詢對應型別的資料列.<>1,查詢相容的所有列,字元資料使用like匹配
AS
SET
NOCOUNT ON
IF @value IS NULL RETURN
--資料型別處理
SELECT xtype INTO #t
FROM systypes
WHERE
name=SQL_VARIANT_PROPERTY(@value,N'BaseType')
--擴充套件資料型別及查詢處理語句
DECLARE
@sql nvarchar(4000),@sql1 nvarchar(4000)
IF @precision=1
SET @sql=CASE
SQL_VARIANT_PROPERTY(@value,N'BaseType')
WHEN N'text' THEN N' LIKE
N''%''+CAST(@value as varchar(8000))+''%'''
WHEN N'ntext' THEN N' LIKE
''%''+CAST(@value as nvarchar(4000))+''%'''
ELSE N'=@value'
END
ELSE
BEGIN
SET @sql=CAST(SQL_VARIANT_PROPERTY(@value,N'BaseType')
as sysname)
IF @sql LIKE N'%char' or @sql LIKE N'%text'
BEGIN
INSERT #t SELECT xtype FROM systypes
WHERE name LIKE N'%char' or name LIKE
N'%text'
SELECT @sql=N' LIKE N''%''+CAST(@value as '
+CASE
WHEN
LEFT(@sql,1)=N'n' THEN ' nvarchar(4000)'
ELSE 'varchar(8000)' END
+N')+N''%'''
END
ELSE IF @sql LIKE N'%datetime'
BEGIN
INSERT
#t SELECT xtype FROM systypes
WHERE name LIKE N'%datetime'
SET
@sql=N'=@value'
END
ELSE IF @sql LIKE N'%int'
OR @sql LIKE
N'%money'
OR @sql IN(N'real',N'float',N'decimal',N'numeric')
BEGIN
INSERT #t SELECT xtype FROM systypes
WHERE name LIKE N'%int'
OR name LIKE N'%money'
OR name IN(N'real',N'float',N'decimal')
SET @sql=N'=@value'
END
ELSE
SET
@sql=N'=@value'
END
--儲存結果的臨時表
CREATE TABLE #(TableName
sysname,FieldName sysname,Type sysname,SQL nvarchar(4000))
DECLARE tb
CURSOR LOCAL
FOR
SELECT N'SELECT * FROM '
+QUOTENAME(USER_NAME(o.uid))
+N'.'+QUOTENAME(o.name)
+N' WHERE
'+QUOTENAME(c.name)
+@sql,
N'INSERT #
VALUES(N'+QUOTENAME(o.name,N'''')
+N',N'+QUOTENAME(c.name,N'''')
+N',N'+QUOTENAME(QUOTENAME(t.name)+CASE
WHEN t.name IN
(N'decimal',N'numeric')
THEN N'('+CAST(c.prec as varchar)+N','+CAST(c.scale
as varchar)+N')'
WHEN t.name=N'float'
OR t.name like N'%char'
OR
t.name like N'%binary'
THEN N'('+CAST(c.prec as varchar)+N')'
ELSE N''
END,N'''')
+N',@sql)'
FROM sysobjects o,syscolumns c,systypes t,#t
tt
WHERE o.id=c.id
AND c.xusertype=t.xusertype
AND
t.xtype=tt.xtype
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
OPEN
tb
FETCH tb INTO @sql,@sql1
WHILE @@FETCH_STATUS=0
BEGIN
SET
@sql1=N'IF EXISTS('+@sql+N') '+@sql1
EXEC sp_executesql @sql1,N'@value
sql_variant,@sql nvarchar(4000)',@value,@sql
FETCH tb INTO
@sql,@sql1
END
CLOSE tb
DEALLOCATE tb
SELECT * FROM #
--執行儲存過程查詢:
exec sp_ValueSearch '要搜尋的值',1 --1或不輸入(即預設值1)精確匹配
exec sp_ValueSearch
'要搜尋的值',0 --不等於1,模糊匹配
--注:在查詢數字型欄位時要把搜尋值的引號去掉,比如,exec sp_ValueSearch 100,1
相關文章
- 在MongoDB資料庫中查詢資料(上)MongoDB資料庫
- Python—Django:關於在Django框架中對資料庫的查詢函式,查詢集和關聯查詢PythonDjango框架資料庫函式
- mysql帶IN關鍵字的查詢MySql
- 20240719資料庫關聯查詢、條件查詢資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 資料庫中單表查詢資料庫
- PostgreSQL 資料庫中 DISTINCT 關鍵字的 4 種用法SQL資料庫
- 學習 XQuery:XML資料查詢的關鍵XML
- ORACLE 查詢條件出現關鍵字:&Oracle
- 在Laravel 5.6中 使用Swoole的協程資料庫查詢Laravel資料庫
- mysql帶AND關鍵字的多條件查詢MySql
- mysql新建表和多表查詢,關鍵字joinMySql
- day95:flask:SQLAlchemy資料庫查詢進階&關聯查詢FlaskSQL資料庫
- 關係型資料庫查詢語言 SQL 和圖資料庫查詢語言 nGQL 對比資料庫SQL
- 資料庫高階查詢之子查詢資料庫
- 關於Oracle資料庫的時間查詢Oracle資料庫
- Python+資料庫測試常用關鍵字Python資料庫
- Jemter查詢資料庫資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 資料庫排序查詢資料庫排序
- 查詢資料庫大小資料庫
- Oracle資料庫中的分頁查詢Oracle資料庫
- 資料庫基礎查詢--單表查詢資料庫
- 在Java中this關鍵字的使用Java
- 多個異構資料庫如何關聯查詢資料庫
- 關於dcat-admin 資料庫過濾查詢資料庫
- 在資料庫的查詢與更新中,CHARINDEX與instr的區別?資料庫Index
- 資料庫SQL語句中關於explain關鍵字的用法資料庫SQLAI
- 對於Linq查詢關鍵字及await,async非同步關鍵字的擴充套件使用AI非同步套件
- 資料庫查詢優化資料庫優化
- 資料庫查詢語句資料庫
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 關於資料庫查詢業務的幾點思考資料庫
- 在EFCore中多對多關係的設計資料插入與查詢
- Logtail:像查詢資料庫一樣查詢日誌AI資料庫
- java中資料庫查詢,搭配簡單的圖形介面進行查詢Java資料庫
- 資料庫查詢語言(DQL)資料庫
- openguass 資料庫狀態查詢資料庫