`
talentkep
  • 浏览: 101450 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

sp_valuesearch

阅读更多

USE [master]

GO

/****** 对象:  StoredProcedure [dbo].[sp_ValueSearch]    脚本日期: 12/19/2013 15:39:49 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROC [dbo].[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(10000)' 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 text)

 

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 replace(CAST(SQL as  nvarchar(4000)),N'@value',''''+CAST(@value as  nvarchar(4000))+'''') as SQL_str from # where SQL like '%@value%'

update # set SQL = replace(CAST(SQL as  nvarchar(4000)),N'@value',''''+CAST(@value as  nvarchar(4000))+'''') where SQL like '%@value%'

SELECT * FROM #

--SELECT * FROM #t

 

分享到:
评论

相关推荐

    SP_Flash_Tool_v6.2124_Win.zip

    "SP_Flash_Tool_v6.2124_Win.zip" 是一个针对Android设备的固件升级工具,主要由 MediaTek 公司开发,用于帮助用户更新或修复基于 MediaTek 芯片的智能手机和平板电脑的固件。这个工具在中文通常被称为“智能平台...

    SP_Flash_Tool_exe_Windows_v5.2116.00.000.zipl.rar

    "SP_Flash_Tool_exe_Windows_v5.2116.00.000.zipl.rar" 这个文件名表明我们正在处理一个适用于Windows操作系统的固件更新工具,名为“SP_Flash_Tool”。这个工具是SmartPhone Flash Tool(SP_Flash_Tool)的一个版本...

    SP_Flash_Tool_v5.2124_Win.zip

    《SP_Flash_Tool_v5.2124_Win.zip》是一个专用于安卓设备的固件升级工具,其核心组件是SP_Flash_Tool(SmartPhone Flash Tool),它是由 MediaTek Inc. 开发的一款强大的软件,主要用于对基于MediaTek芯片的Android...

    MTK联发科SP_Flash_Tool_v5.2316_Win专业刷机工具

    MTK联发科SP_Flash_Tool_v5.2316_Win是一款针对联发科(MTK)处理器的安卓设备而设计的专业刷机工具。它主要用于帮助用户进行系统升级、故障修复、数据恢复等操作,尤其适用于那些无法通过常规方法进行软件更新的设备...

    SP_Flash_Tool_src_5.1844源代码C

    《SP_Flash_Tool_src_5.1844源代码C深度解析》 SP_Flash_Tool,全称为Smart Phone Flash Tool,是一款广泛应用于基于MediaTek(MTK)芯片的Android设备的固件升级和刷机工具。这款工具的核心功能是通过C语言实现,...

    SQL通过SP_OA调用外部HTTP

    EXEC @HR = sp_OACreate N'MSXML2.XMLHTTP.6.0',@Object OUT; IF @HR &lt;&gt; 0 BEGIN EXEC sp_OAGetErrorInfo @Object,@Source OUT,@Desc OUT; RAISERROR('Error Creating COM Component 0x%x, %s, %s',16,1, @HR, @...

    sp_dboption.txt

    sp_dboption函数命令SQLserver2008以上版本适用 SQLserver2008以上版本,不再支持sp_dboption函数,但你可以下载sp_dboption函数,在master直接执行,后面就可以使用sp_dboption函数命令

    sp_meta工具

    **SP_META工具详解** 在移动设备的开发和调试过程中,Meta模式扮演着至关重要的角色。MTK(MediaTek)作为全球知名的芯片制造商,为开发者提供了一款名为SP_META的工具,便于进入Meta模式进行二次开发。本文将深入...

    创建SP_WHO_LOCK死锁信息临时表然后执行 exec sp_who_lock.SQL

    创建SP_WHO_LOCK死锁信息临时表,查询数据库死锁信息,方便解决数据库锁库问题。

    MTK_SP_Flash_Tool_v5.2112_Win.zip

    MTK_SP_Flash_Tool_v5.2112_Win.zip 是一款专为Mediatek(MTK)芯片组设计的刷机工具,用于在个人计算机(PC)上对基于MTK平台的智能手机和平板电脑进行系统升级、固件刷新等操作。这款工具的版本号为v5.2112,意味...

    DSPLib.rar_.ae674 DSP_674c com_DSPF_sp_dotp_cplx_DSPF_sp_fir_r

    TMS320C674x的DSP内核设计有高速浮点运算单元,DSPLib充分利用这一优势,提供了如复数乘法(DSPF_sp_dotp_cplx)等基本数学运算的高效实现。复数乘法在信号处理中非常常见,例如在滤波器设计、频谱分析中都会用到,...

    SP_Flash_Tool_v5.2044_Win.zip

    "SP_Flash_Tool_v5.2044_Win.zip" 是一个专为MediaTek (MTK) 芯片组设计的下载工具,适用于Windows操作系统。这个工具的主要功能是帮助用户对基于MTK芯片的Android设备进行固件升级、系统恢复、刷机等操作。在...

    SP_Flash_Tool_v5.1352.01中文版

    SP_Flash_Tool,全称SmartPhone Flash Tool,是一款在安卓设备上广泛使用的刷机工具,尤其在处理手机系统故障或需要恢复出厂设置时非常实用。它由 MediaTek Inc. 开发,专为搭载联发科(Mediatek)芯片的智能手机和...

    通过SP_Flash_Tool线刷失败解决方法_代码.docx

    "通过SP_Flash_Tool线刷失败解决方法" SP_Flash_Tool是一款流行的刷机工具,主要用于MTK芯片的Android设备。但是在使用SP_Flash_Tool时,用户经常会遇到各种错误代码,这些错误代码会阻止刷机过程的进行。下面我们...

    SP_MDT_exe_v3.1620.00.00.zip_1.620.00_MTK下载_SP-MDT_SP_MDT_SP_MDT

    MTK平台下载软件,下载,擦除,MemeryTest,回读等功能。

    MTK 刷机工具 Android系统刷机 SP_Flash_Tool_v6.2216_Win

    MTK(MediaTek)刷机工具,全称为SP_Flash_Tool,是专为基于MediaTek芯片的Android设备设计的一款强大的固件升级和恢复工具。在本文中,我们将深入探讨这款工具的功能、使用方法以及相关注意事项。 MTK(MediaTek)...

    MTK_SP_Drivers_v 2.0.rar

    MTK_SP_Drivers_v 2.0 是一个专门针对联发科(MediaTek)芯片组的特殊程序包,主要用于安装和更新适用于联发科设备的驱动程序。这个压缩文件包含了一系列驱动,使得用户能够在电脑上顺利识别和操作基于联发科处理器...

    SP_Flash_Tool_exe_Windows_v5.2016.00.000.zip

    《SP_Flash_Tool.exe:MTK平台的固件升级利器》 在电子设备的世界里,固件升级是一项至关重要的任务,它能优化设备性能、修复系统漏洞或增加新功能。对于基于MediaTek(MTK)芯片组的设备,SP_Flash_Tool.exe是一个...

    SP_Flash_Tool_exe_Windows_v5.1720.00.000.zip

    《SP_Flash_Tool_exe_Windows_v5.1720.00.000.zip:联发科Android设备刷机利器》 在Android设备的世界里,刷机是一种常见的个性化和优化操作,它允许用户根据自己的需求更换系统、安装特定固件或者修复设备问题。而...

    SP_Flash_Tool_exe_Windows_v5.17_5.18_5.21.rar

    《MTK平台ROM烧录工具——SP_Flash_Tool详解》 MTK,全称为MediaTek,是全球知名的半导体公司,其在手机芯片领域有着广泛的应用。对于开发人员和手机爱好者来说,MTK平台的ROM烧录工具——SP_Flash_Tool(Smart ...

Global site tag (gtag.js) - Google Analytics