Sqlserver根據欄位查詢表和根據欄位值查詢表的幾個方法
-------------Sqlserver根據欄位名稱查詢表(多個欄位值),例如查詢欄位名包含 ibatch和cbatch 的表
SELECT *FROM(
SELECT t2.name
FROM syscolumns t1,sysobjects t2
WHERE t1.id=t2.id
and t1.NAME='ibatch'
) m
LEFT JOIN
(
SELECT t2.name
FROM syscolumns t1,sysobjects t2
WHERE t1.id=t2.id
and t1.NAME='cbatch'
) n ON m.name=n.name
-- 在資料庫執行,Sqlserver根據欄位值查詢那些表包含這個值
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_FindValueInDB]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 刪除儲存過程
drop procedure [dbo].[SP_FindValueInDB]
GO
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)
)
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 + ''')'
EXEC(@sql)
FETCH NEXT FROM TABLES
INTO @table, @column
END
CLOSE TABLES
DEALLOCATE TABLES
SELECT * FROM #t
DROP TABLE #t
End
-- exec [SP_FindValueInDB] '010201' ---執行儲存過程,傳入要找的值 010201
-- 另一個根據欄位值查詢表的方法
----- 根據欄位值查詢表
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Full_Search]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
-- 刪除儲存過程
drop procedure [dbo].[Full_Search]
GO
CREATE proc Full_Search(@string varchar(50))
as
begin
declare @tbname varchar(50)
declare tbroy cursor for select name from sysobjects
where xtype= 'u ' --第一個遊標遍歷所有的表
open tbroy
fetch next from tbroy into @tbname
while @@fetch_status=0
begin
declare @colname varchar(50)
declare colroy cursor for select name from syscolumns
where id=object_id(@tbname) and xtype in (
select xtype from systypes
where name in ( 'varchar ', 'nvarchar ', 'char ', 'nchar ') --資料型別為字元型的欄位
) --第二個遊標是第一個遊標的巢狀遊標,遍歷某個表的所有欄位
open colroy
fetch next from colroy into @colname
while @@fetch_status=0
begin
declare @sql nvarchar(1000),@j int
select @sql= 'select @i=count(1) from '
exec sp_executesql @sql,N'@i int output',@[email protected] output --輸出滿足條件表的記錄數
if @j> 0
BEGIN
select 包含字串的表名[email protected]
--exec( 'select distinct '[email protected]+' from ' [email protected] + ' where '+ @colname+ ' like '+ '''%'[email protected]+ '%''')
END
fetch next from colroy into @colname
end
close colroy
deallocate colroy
fetch next from tbroy into @tbname
end
close tbroy
deallocate tbroy
end
go
-- exec Full_Search '19344' ---執行儲存過程,傳入要找的值 010201
相關推薦
Sqlserver根據欄位查詢表和根據欄位值查詢表的幾個方法
-------------Sqlserver根據欄位名稱查詢表(多個欄位值),例如查詢欄位名包含 ibatch和cbatch 的表 SELECT *FROM( SELECT t2.name FROM syscolumns t1,sysobjects t2 WHERE t1
sql 欄位新增 和增加欄位備註 刪除備註
新增備註 /*oracle*/ comment on column 表名.列名 is '備註';/*mysql*/ ALTER TABLE 表名 MODIFY 欄位名 型別 COMMENT '備註'; 刪除表字段 alter table <表名> drop co
List使用Stream流進行集合Collection的各種運算彙總:對BigDecimal求和,某個欄位的和、最大值、最小值、平均值,欄位去重,過濾等
寫Java介面的朋友都知道,Java 8的更新,經常會用到過濾 list<Object> 裡的資料,本文就對List使用Stream流進行集合Collection的各種運算做一個彙總! 優勢: &nbs
ORACLE 批量插入 主鍵為自增序列 有幾個欄位資料從其他表匯入的 有幾個是固定的
ORACLE 批量插入 主鍵為自增序列 有幾個欄位資料從其他表匯入的 有幾個是固定的 insert into CUSTOMERPRODUCTCATEGORY----------目標表 (CUSTOMERPRODUCTCATEGORYID,ORIGINALID,WE
Java反射常用到的幾個方法,獲取Private欄位,執行其他類的方法,獲取類名
1.引言 已經很久沒有寫過Java程式碼了,寫了一年的的C++,今天看到C++的friend(友元)可以操作一個類的private屬性,突然想到Java的反射,今天用Java寫了一小段程式碼實驗了一下,專案中比較實用。也是在以前做安卓的專案的時候老是聽到師傅說
linux下文件特殊權限設置位S和沾附位T(轉載)
linux 表示 mkdir 文件 執行 pre 體會 針對 min 今天在創建文件的時候,發現了文件權限末尾有個T,之前沒留意過,後來又用c創建(open)了兩個文件來查看,在我沒有指定權限(省略open的第三個參數)的時候,有時還會出現S,雖然還沒弄懂什麽時候會出現S
CSS響應式:根據分辨路加載不同CSS的幾個方法,親測可用
響應 col 但是 max-width width media 總結 屏幕 link 有時候你需要把同一個頁面在手機和pc同時打開,其中有一個辦法就是判斷不同分辨路加載不同的css 小編總結了幾種分別加載css的方法: 1.比較復雜的使用js判斷加載不同css (親
[計算機程式設計C++] 輸入整數顯示十六進位制和八進位制
12 輸入整數顯示十六進位制和八進位制(10分) 題目內容: 編寫程式,輸入整數,顯示其十進位制、十六進位制和八進位制形式。如輸入31,輸出: -31 -1f -37 輸入:一個整數,注意,可能是負數。 輸出:三個數,十進位制、十六進位制和八進位制,用空格隔開。 提示
【華為】2019校招(字串解壓縮,26進位制和10進位制相互轉換)
字串解壓縮,a11b2bac3bad3abcd2,按照數量由少到多的順序,數量相等的按照字典序,輸出 ccccbbbbbdddddaaaaaaaaaaaaaa 竟然自己做了兩個小時,加快程式設計速度,一定加快速度,注重準確性,正式筆試沒有時間除錯。 開始用i,j指標遍歷找到字元和它的出現
其他進位制轉化為10進位制和10進位制轉化為其他進位制(均一個函式)c++
今天專門抽出來一點時間來弄一下,進位制轉化的問題,不論是其他進位制轉化為10進位制還是10進位制轉化為其他進位制,均使用同一個函式來完成,只需要手動輸入從哪個進位制轉化為哪個進位制。 程式碼如下: #include <iostream> #include <cmat
16進位制和2進位制互轉
/** * 2進位制轉換為16進位制 * * @param b * @return */ public static String byte2hex(byte[] b) { // 二進位制轉16進
2個8位資料和一個16位資料相互轉換
這種位的轉換其實理解了本質就很容易了,也很基礎。 首先先了解一下bit和Byte,俗稱大B和小b的區別。 一個小b只能代表一個內容(0或者1,其中的一個) 兩個小b可代表4個內容 “2的2次方“ (00,11,01,10) bit意為“位”或“位元”
java 10進位制和5進位制互轉 生成的唯一邀請碼
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.time.LocalDateTime; import java.time.Period; import java.time.ZoneId;
12進位制和20進位制計數器
既然選擇了遠方 就只顧風雨兼程 <盜用的> 12進位制計數器原理圖 經過前面的各種摸爬滾打 這個簡直不再話下<小裝一下> 12進位制計數器模擬圖 下面就是20進位制計數器的了 20進位制計數器原理圖 接下來就是模擬圖,
用8進位制和16進位制建立字串
開始 #include <string> // 8進位制Oct(octonary) //10進位制Dec(decimal) //16進位制Hex(hexadecimal) int main() { //我想將一個16/8/10進位制的數字賦值給一個int
c語言字串轉換為16進位制和10進位制數字
字串轉換為16進位制或者10進位制:1、使用自己編寫的函式。2、使用庫函式。 將字串轉換為16進位制兩種方法的程式碼: #include<stdio.h> #include<string.h> #include<stdlib.h> in
C語言16位拆成高低八位,和高低八位合成16位資料(1)
#include <stdio.h> #include <stdlib.h> char right,left,temp;//right表示第八位,left表示高八位 int si
輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。 思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。
1,輸入一個十進位制整數,設計遞迴函式,將該整數轉化為一個二進位制數。思考: 如何將一個十進位制數轉化成一個8進位制和16進位制數。 #include<stdio.h> #define N 20 int main() { int a,n,c,k,i; cha
Verilog自頂向下設計24進位制和60進位制計數器(FPGA)
提供Verilog自頂向下設計24進位制和60進位制計數器(1Hz,頻率可調)並用數碼管動態顯示的程式碼,且兩個程式皆在Basys2開發板上驗證通過。程式思路:首先將程式分為4部分:分頻程式、計數程式、數碼管動態顯示程式、頂部程式。合理安排輸入與輸出介面。注意頂部程式中的連線
mysql和oracle的一個漢字占幾個字符
技術分享 AR == details 應該 gravity 為什麽 tail 計算 轉自:http://blog.csdn.net/u011575570/article/details/47414513 以前一直使用oracle11g,一個漢字占3個字節,所以在操作mysq