Loading data........
Tin nhanh :
Buctuongso.com đăng tin rơi giấy tờ, tìm tài sản
Xem Tivi Online

Tổng hợp các kênh giải trí (Đang cập nhật chức năng..)

New Update

Truyền hình SCTV

SCTV14

SCTV15

SCTV16

SCTV17

SCTV18 HD

Vietnam Channels

VTV1

VTV2

VTV3

VTV4

VTV6

VTV9

VTC Online

VTC1

VTC2

VTC3

VTC4

VTC5

VTC6

VTC Online

VTC7

VTC8

VTC9

VTC10

VTC11

VTC12

Truyền hình tp HCM

HTV1

HTV2

HTV3

HTV4

HTV7

HTV9

Radio Channels

VOV1

VOV2

VOV3

VOV4

VOV5

VOV GT-HN

Home » , » ADVANCE SQL - Tạo thủ tục tìm kiếm 1 từ khóa bất kỳ trong 1 bảng bất kỳ

ADVANCE SQL - Tạo thủ tục tìm kiếm 1 từ khóa bất kỳ trong 1 bảng bất kỳ

Thông thường đối với những dự án có cấu trúc cơ sở dữ liệu lớn, trong 1 database có rất chi là nhiều bảng và trong mỗi bảng có hàng nghìn bản ghi.

Việc tìm kiếm 1 từ khóa nào đó thuộc bảng nào sẽ vô cùng khó khăn khi bạn thực sự không nhớ từ khóa đó nằm ở bảng nào. Thông thường chúng ta sẽ mở từng bảng ra và truy vấn từ khóa trong chính bảng đó.

Để thuận tiện hơn trong việc tìm kiếm 1 từ khóa mà có thể nằm ở nhiều bảng khác nhau, chúng ta có thể sử dụng 1 thủ tục dưới đây để truy vấn cho tất cả các bảng trong cơ sở dữ liệu.

DECLARE @KeyWord nvarchar(100)
SET @KeyWord = N'quần áo'
--SELECT @KeyWord
DECLARE @itemTable nvarchar(1000)
DECLARE ListTable CURSOR FOR SELECT name FROM sys.tables WHERE type ='u'
OPEN ListTable
FETCH next FROM ListTable INTO @itemTable
WHILE @@FETCH_STATUS=0
BEGIN
    BEGIN try
   
  DECLARE @itemColumn nvarchar(100)
        DECLARE ListColumn CURSOR FOR SELECT name FROM sys.columns WHERE object_id=object_id(@itemTable)
        OPEN ListColumn
        FETCH next FROM ListColumn INTO @itemColumn
        WHILE @@FETCH_STATUS=0
        BEGIN
   BEGIN try
    DECLARE @sql NVARCHAR(max)
    DECLARE @Check BIT   
    SET @sql = 'IF EXISTS(select [' + @itemColumn+ '] from ' + @itemTable + ' where ['
    + @itemColumn + '] LIKE N''%'+@KeyWord+'%'' escape ''['') BEGIN SET @Check = 1 END'
    --PRINT @sql
    EXEC dbo.Sp_ExecuteSql @sql, N'@Check BIT OUTPUT', @Check OUTPUT
    IF @Check = 1
    BEGIN
     --PRINT('Column: '+@itemColumn+' - Table: '+@itemTable)
     --EXEC('SELECT ['+@itemColumn+'] AS ''Column'', @itemTable AS [Table]')
     SELECT @itemColumn AS 'Column', @itemTable AS [Table]
     --PRINT 'ok'
    END
    SET @Check = 0
   END try
   BEGIN catch
    PRINT @@error
   END catch
   FETCH next FROM ListColumn INTO @itemColumn
  END
  CLOSE ListColumn
  DEALLOCATE ListColumn
   
    END try
    BEGIN catch
        PRINT 'error 2'
    END catch
    FETCH next FROM ListTable INTO @itemTable
END
CLOSE ListTable
DEALLOCATE ListTable
Like và chia sẻ với bạn bè :

2 comments:

  1. Đăng bài phải xóa hết comment màu xanh đi chứ anh bạn, ai lại để thế

    ReplyDelete

Bạn có ý kiến thắc mắc hay bình luận gì về bài viết này vui lòng để lại lời nhắn.Cám ơn bạn đã ghé thăm !

 
Proudly powered by Blogger
Copyright © 2009-. The Color Of Life - All Rights Reserved