在SQL2008查找某数据库中的列是否存在某个值

原文:在SQL2008查找某数据库中的列是否存在某个值

在SQL2008查找某数据库中的列是否存在某个值

--SQL2008查找某数据库中的列是否存在某个值
create proc spFind_Column_In_DB
(
    @type int,--类型:1为文字类型、2为数值类型
    @str nvarchar(100)--需要搜索的名字
)
as
    --创建临时表存放结果
    create table #tbl(PK int identity primary key ,tbl sysname,col sysname)
    declare @tbl nvarchar(300),@col sysname,@sql nvarchar(1000)
    if @type=1
    begin
        declare curTable cursor fast_forward
        for
            select ‘[‘+SCHEMA_NAME(SCHEMA_ID)+‘].[‘+o.name+‘]‘ tableName,‘[‘+c.name+‘]‘ columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
            where o.type_desc=‘user_table‘ and user_type_id in (167,175,231,239,35,99)
     end
    else
    begin
        declare curTable cursor fast_forward
        for
        select ‘[‘+SCHEMA_NAME(SCHEMA_ID)+‘].[‘+o.name+‘]‘ tableName,‘[‘+c.name+‘]‘ columnName from sys.columns c inner join sys.objects o on c.object_id=o.object_id
            where o.type_desc=‘user_table‘ and user_type_id in (56,48,52,59,60,62,106,108,122)
    end
    open curtable
    fetch next from curtable into @tbl,@col
    while @@FETCH_STATUS=0
    begin
        set @sql=‘if exists (select * from ‘+@tbl+‘ where ‘
        if @type=1
        begin
            set @sql += @col + ‘ like ‘‘%‘+@str +‘%‘‘)‘
        end
        else
        begin
            set @sql +=@col + ‘ in (‘+@str+‘))‘
        end

        set @sql += ‘ INSERT #TBL(tbl,col) VALUES(‘‘‘+@tbl+‘‘‘,‘‘‘+@col+‘‘‘)‘
        --print @sql
        exec (@sql)
        fetch next from curtable into @tbl,@col
    end
    close curtable
    deallocate curtable
    select * from #tbl

--使用例子,查询库中存在aaa这个值的列:
exec  spFind_Column_In_DB  1,‘aaa‘
时间: 2024-08-04 19:49:42

在SQL2008查找某数据库中的列是否存在某个值的相关文章

不同数据库中两列字段相减(某列有空值)

数据库中两个字段相减(某列有空值)处理方法: sql server中:select (isnull(字段1,0)-isnull(字段2,0)) as 结果 from 表 oracle中:select (nvl(字段1,0)-nvl(字段2,0)) as 结果 from 表 mysql中:select (ifnull(字段1,0)=ifnull(字段2,0)) as 结果 from 表 不同数据库中两列字段相减(某列有空值),码迷,mamicode.com

mybatis高级(2)_数据库中的列和实体类不匹配时的两种解决方法_模糊查询_只能标签

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.cnsdhzzl.dao.StudentDao&q

利用SQL语句查找某数据库中所有存储过程包含的内容(转)

Use 数据库DECLARE @ProcName varchar(50)Create Table #tmpName(Content  varchar(2000))Create Table #tmp(ProcName  varchar(2000),Content1 varchar(8000))--定义一个游标DECLARE SearchProc CURSOR FOR--查询数据库中存储过程的名称,尽量去除系统PROC,可以根据crdate时间字段来寻找非系统PROCselect name from

thinkphp怎么把数据库中的列的值存到下拉框中

1. 先去数据库中查值,查询整个数据表,结果为二维数组. $project = M("project"); $cell = $project->where(array('status'=>1))->order("id desc")->select(); //var_dump($cell); $this->assign('cell',$cell); 2.前台获取遍历 <select class="test" st

查找mysql数据库中所有包含特定名字的字段所在的表

整个数据库查找 placement 字段: select * from INFORMATION_SCHEMA.columns where COLUMN_NAME Like '%placement%'; 根据 Database 数据库 查看 ColumnA,ColumnB字段: SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME IN ('ColumnA','ColumnB') AND TABLE

Sql 查找整个数据库中的字符串

--存储过程 CREATE PROCEDURE [dbo].[SP_FindValueInDB] ( @value VARCHAR(1024) ) AS BEGIN SET NOCOUNT ON; DECLARE @sql VARCHAR(1024) DECLARE @table VARCHAR(64) DECLARE @column VARCHAR(64) CREATE TABLE #t ( tablename VARCHAR(64), columnname VARCHAR(64) ) DEC

查找某数据库中所有的字段

SqlServer SELECT s.name,s.id,t.TABLE_NAME FROM SYSCOLUMNS s ,INFORMATION_SCHEMA.TABLES  t WHERE s.id = OBJECT_ID(t.TABLE_NAME) and t.TABLE_CATALOG = '数据库名'and s.name = '字段名'  order by TABLE_NAME 原文地址:https://www.cnblogs.com/FlyLolo/p/8203695.html

提取postgresql数据库中jsonb列的数据

SELECT t.* FROM person, jsonb_to_record(info) AS t(num text, name text, score text) WHERE person.id=1; SELECT t.errmsg,sms_records.* FROM sms_records, jsonb_to_record(result_json) AS t(errmsg text,sid text) select tb_result.errmsg,* from ( select t1.

数据库中查询列数据是否有重复

查单个字段:SELECT TEST_NAME,COUNT(*) FROM T_TEST GROUP BY TEST_NAME HAVING COUNT(*) > 1; 查组合字段:SELECT TEST_NAME1,TEST_NAME2,COUNT(*) FROM T_TEST GROUP BY TEST_NAME1,TEST_NAME2 HAVING COUNT(*) > 1; 因为使用统计函数COUNT,所以不能使用WHERE条件进行查询,只能用HAVING进行查询.