sql - 在数据库中的所有表中搜索字符串和数字
问题描述
我试图在几个地方搜索几天,但没有成功使用这个脚本。我需要在数据库中的所有表中搜索同一记录中的aString(NVarChar)
和 a 。Number(Int)
在以下示例中,我需要找到同时存在这两个条件的表和字段。例如,查找 AAA 字符串,但前提是存在编号为 990 的字段。
TBL_TEST
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 12 |
BBB | 457 | 12 |
CCC | 347 | 12 |
AAA | 990 | 13 | <---
BBB | 387 | 13 |
CCC | 213 | 13 |
AAA | 888 | 14 |
BBB | 888 | 14 |
CCC | 888 | 14 |
****** 我在这个好地方找到了这个脚本,但它只搜索字符串数据并且只出现一次,但我需要找到一个字符串和一个数字,并且只需要两个记录都可用的记录。
让我试着更好地解释我,希望我的英语有所帮助。想象一个有 3 个表(TBL1、TBL2 和 TBL3)的数据库。这些表有几列,但在本例中,每个表我只放置 3 列。
TBL1
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 132 |
BBB | 457 | 1E2 |
CCC | 347 | 1E2 |
AAA | KK0 | 13W |
BBB | 387 | 136 |
CCC | 213 | 133 |
AAA | 888 | 990 |<---
BBB | 888 | 144 |
CCC | 888 | 14 |
TBL2
FIELD_A | FIELD_B | FIELD_C |
AAA | ASD | 12 |
BBB | 3ED | 12 |
CCC | 32E | 12 |
AAA | 990 | 13 |<---
BBB | 123 | 13 |
CCC | 213 | 13 |
AAA | 445 | 14 |
BBB | 234 | 14 |
CCC | A23 | 14 |
TBL3
FIELD_A | FIELD_B | FIELD_C |
AAA | 124 | 132 |
BBB | 457 | 990 |
CCC | 347 | 1E2 |
AAA | KK0 | 13W |
BBB | 387 | 136 |
CCC | 213 | 133 |
AAA | 888 | 990 |
BBB | 888 | 144 |
990 | 888 | AAA |<---
脚本的结果必须是这样的。
TBL1
FIELD_A / FIELD_C
TBL2
FIELD_A / FIELD_B
TBL3
FIELD_A / FIELD_C
希望足够清楚。再次感谢您。
解决方案
您需要在所有表中动态搜索两个值,以这个简单的示例为例(尝试粘贴并执行):
DECLARE @SQL AS nvarchar(MAX)
SET @SQL = ''
Select @SQL = @SQL + 'Select * from TBL_TEST where '+ISC.COLUMN_NAME+'= ''AAA'' AND '+(Select top(1) C.COLUMN_NAME FROM
INFORMATION_SCHEMA.TABLES T
INNER JOIN INFORMATION_SCHEMA.COLUMNS C ON T.TABLE_NAME = C.TABLE_NAME
where IST.TABLE_NAME = 'TBL_TEST' and C.TABLE_NAME ='TBL_TEST' and c.COLUMN_NAME<>ISC.COLUMN_NAME)+'= ''990'''
FROM
INFORMATION_SCHEMA.TABLES IST
INNER JOIN INFORMATION_SCHEMA.COLUMNS ISC ON IST.TABLE_NAME = ISC.TABLE_NAME
where IST.TABLE_NAME = 'TBL_TEST'
exec(@SQL)
推荐阅读
- fortran - 在 fortran 中打印两个一维数组
- android - 在 API 28 中使用 AutocompleteFragment 或 AutocompleteActivity 时键盘不会自动出现
- ios - 在swift中为textview分配边框宽度和颜色时应用程序崩溃
- c# - 将标签打印调整为标签大小
- sql-server - 在 SSRS 中查询慢,但在 SSMS 中查询快
- python-3.x - 运行会话以获取张量的“静态”形状时如何解决该问题
- javascript - 表单数据()。在单行中传递多个参数
- regex - 仅替换完整字符串的一部分
- operator-overloading - 如何定义“AT-POS”方法?
- ruby - Ruby 应用程序的 Dockerfile - 为什么将 WORKDIR 指定为 /usr/src/app