Hiển thị các bài đăng có nhãn SQL. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn SQL. Hiển thị tất cả bài đăng

Thứ Tư, 1 tháng 4, 2009

Tìm kiếm SQL Server objects nhanh hơn.

Trong bài viết này sẽ hướng dẫn cho bạn một số cách tìm kiếm các đối tượng SQL Server một cách nhanh chóng hơn. Việc tìm kiếm các đối tượng trong SQL Server như table hay stored procedure sẽ rất cực nhọc bởi vì bạn phải duyệt qua từng đối tượng một trong...

Trong bài viết này sẽ hướng dẫn cho bạn một số cách tìm kiếm các đối tượng SQL Server một cách nhanh chóng hơn.

Việc tìm kiếm các đối tượng trong SQL Server như table hay stored procedure sẽ rất cực nhọc bởi vì bạn phải duyệt qua từng đối tượng một trong database. Object Browser có thể trợ giúp cho bạn nhưng lại tiêu tốn khá nhiều thời gian.

Vì vậy, hãy bắt đầu bằng việc giả sử rằng chúng ta chưa biết bảng TestTable nằm ở đâu. Chúng ta có thể sử dụng bảng SysObject và truy vấn nó theo cách sau:

  1. Select * from SysObjects where name like ‘TestTable’
  2. [code]
  3. Nhưng bảng SysObject này thuộc về một database cụ thể. Do đó, nếu bạn có một database tên là DB1 có chứa TestTable và bạn chạy câu lệnh truy vấn trong DB2, nó sẽ không cho bạn kết quả mong muốn.
  4. Vì vậy nếu như tên của database là unknown?, chúng ta sử dụng câu lệnh truy vấn sau đây:
  5. [code]
  6. Exec sp_MSforeachdb ' Select * from ?.. SysObjects where name like ‘TestTable’
  7. ’ Better one: Exec sp_MSforeachdb ' If exists(select * from ?.. SysObjects where name = ‘TestTable’)select *
  8. from ?.. SysObjects where name = TestTable’
  9. ' This will give you the required information and will remove that redundant data.

Chú ý: dấu ? trong câu lệnh truy vấn thay thế cho các tên cơ sở dữ liệu được duyệt trong vòng lặp.

Thủ tục sp_MSforeachdb này không được cung cấp bởi Microsoft. Vì vậy bạn sẽ không tìm thấy trong SQL Server Help. Thủ tục này sẽ chạy duyệt qua tất cả các database đang có mặt trong SQL Server.

Tách chuỗi với T-SQL

Đoạn mã sau đây chỉ cho bạn cách tách chuỗi với dấu phảy phân cách bằng việc sử dụng hàm CharINDEX trong Microsoft SQL Server. declare @fieldName as nvarchar(100) declare @concat as nvarchar(100) declare @pos as int set @fieldName = 'field1,field2...

Đoạn mã sau đây chỉ cho bạn cách tách chuỗi với dấu phảy phân cách bằng việc sử dụng hàm CharINDEX trong Microsoft SQL Server.

  1. declare @fieldName as nvarchar(100)
  2. declare @concat as nvarchar(100)
  3. declare @pos as int
  4. set @fieldName = 'field1,field2,field3,field4,field5,field6,field7,field1,field2,field3,field4,field5,field6,field7'
  5. declare @flag as int
  6. if (@fieldName is null or @fieldName='')
  7. set @flag=0
  8. else
  9. set @flag=1
  10. while (@flag=1)
  11. Begin
  12. set @pos = charINDEX(',',@fieldName)
  13. if (@pos=0)
  14. Begin
  15. select @concat = @fieldName
  16. set @fieldName=''
  17. End
  18. else
  19. Begin
  20. select @concat = substring(@fieldName,0,@pos)
  21. End
  22. print(@concat)
  23. set @fieldName = substring(@fieldName,@pos+1,len(@fieldName))
  24. if (@fieldName is null or @fieldName='')
  25. set @flag=0