查找含有指定字符的表

有的时候,我们想知道包含特定字符的表都有哪些,怎么办呢?其实很简单:SELECT * FROM
dbo.MyCustomer WHERE CustomerName LIKE
‘%AA%‘ 这个样子的SQL我们都不陌生,很简单的查询。再回过来看下我们现在遇到的问题:我们不知道表的名称、字段的名称,那我们只要列出所有的表和对应的字段然后遍历一下就可以了,换句话说,我们只需要把上面的表名【MyCustomer】和字段名【CustomerName】替换成变量就可以。有了SQL语句通过【EXEC】我们就可以做到想查什么就有什么了。下面我们来看下具体的实现方式,为了方便使用,我们把整个实现包装成一个存储过程:


CREATE PROCEDURE [dbo].[查找含有指定字符的表]
(
@value VARCHAR(1024)
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @sql VARCHAR(1024)
DECLARE @table VARCHAR(64)
DECLARE @column VARCHAR(64)

CREATE TABLE #t (
tablename VARCHAR(64),
columnname VARCHAR(64)
)

DECLARE TABLES CURSOR
FOR

SELECT o.name, c.name
FROM syscolumns c
INNER JOIN sysobjects o ON c.id = o.id
WHERE o.type = ‘U‘ AND c.xtype IN (167, 175, 231, 239)
ORDER BY o.name, c.name

OPEN TABLES

FETCH NEXT FROM TABLES
INTO @table, @column

WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = ‘IF EXISTS(SELECT NULL FROM [‘ + @table + ‘] ‘
SET @sql = @sql + ‘WHERE RTRIM(LTRIM([‘ + @column + ‘])) LIKE ‘‘%‘ + @value + ‘%‘‘) ‘
SET @sql = @sql + ‘INSERT INTO #t VALUES (‘‘‘ + @table + ‘‘‘, ‘‘‘
SET @sql = @sql + @column + ‘‘‘)‘

PRINT @sql
EXEC(@sql)

FETCH NEXT FROM TABLES
INTO @table, @column
END

CLOSE TABLES
DEALLOCATE TABLES

SELECT *
FROM #t

DROP TABLE #t

END

--调用方式
EXEC [查找含有指定字符的表] ‘AAA‘

上面就是查询结果,我们查询的是所有包含AAA的表和对应的字段名称。这只是一个解决方案,不是很完美。比方上面的查询当数据库比较庞大时,执行会比较耗时。园子里面的朋友有好解决方案可以@下我,相互学习。

查找含有指定字符的表,布布扣,bubuko.com

时间: 2024-10-24 19:07:01

查找含有指定字符的表的相关文章

Python 判断字符串是否含有指定字符or字符串

Python 判断字符串是否含有指定字符or字符串 ,有如下方法: 1.使用成员操作符 in str1= "ABCDEF123descsf" str2= "CD" result = str2 in str1 print(result) # True 2.使用string模块的find()  rfind  index()  rindex() 原文地址:https://www.cnblogs.com/shenxiaolin/p/12602360.html

【实用类String】String类方法的应用案例:查找判断指定字符出现的次数和位置

一.应用要求 输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数. 二.实现思路 1.使用substring()方法将字符串的每个字符存入数组 2.比较数组每个字符是否与指定的字符相等,并计数 三.编写代码 错误案例: 1 import java.util.Scanner; 2 3 public class StringDemo { 4 5 public static void main(String[] args) { 6 Scanner input = new Scanne

在 MySQL 中查找含有目标字段的表

要查询数据库中哪些表含有目标字段,可以使用语句: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='字段名字' 参考:MySQL中,一个字段在多张表都存在,怎么用sql语句一次性查询这些表呢

C#正则表达式判断是否含有指定字符并去除

/// <summary> /// 处理json字符串,将[]{}'"字符去除 /// </summary> /// <param name="JsonStr">需处理的字符串</param> /// <returns>处理后的字符串</returns> public static string DealJsonStr(string JsonStr) { Regex regex = new Regex(@

查看哪些表的哪些列含有指定字符串(如‘andy’存在哪些表的哪些列中)

-- 查看表中列含有指定字符.SQL> select * from demo1; NAME                                   ID------------------------------ ----------????                                    4andy                                    1andy1                                   2andy

*字符串-01. 在字符串中查找指定字符

1 /* 2 * Main.c 3 * D1-字符串-01. 在字符串中查找指定字符 4 * Created on: 2014年8月18日 5 * Author: Boomkeeper 6 *****部分通过****** 7 */ 8 9 #include <stdio.h> 10 11 int mysearch(char ch, const char str[], int length) { 12 13 int j, ret = -1; 14 15 for (j = 0; j < le

在字符串中查找指定字符

输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c.如果找不到则输出“Not found”:若找到则输出字符串S中从c开始的所有字符. 输入格式: 输入在第1行中给出一个不超过80个字符长度的.以回车结束的非空字符串:在第2行中给出一个字符. 输出格式: 在一行中按照题目要求输出结果. 输入样例1: It is a black box b 输出样例1: black box 输入样例2: It is a black box B 输出样例2: Not found #include<std

从指定的路径中查找含有特殊字符串的文件

import java.io.*;import java.util.*;import java.util.concurrent.*;public class SearchFile{    public static void main(String ... strings)    {        final int FILE_Queue_SIZE = 10;        final int SEARCH_THREADS = 100;        Scanner in = new Scann

10-1. 在字符串中查找指定字符(15)

输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c.如果找不到则输出“Not found”:若找到则输出字符串S中从c开始的所有字符. 输入格式: 输入在第1行中给出一个不超过80个字符长度的.以回车结束的非空字符串:在第2行中给出一个字符. 输出格式: 在一行中按照题目要求输出结果. 输入样例1: It is a black box b 输出样例1: black box 输入样例2: It is a black box B 输出样例2: Not found 1 #include <