02/10/2018, 00:28

[SQLSERVER] Hướng dẫn loại trừ những column đặc biệt trong câu lệnh truy vấn SELECT *

Bài viết hôm nay, mình sẽ hướng dẫn các bạn cách loại bỏ những cột đặc biệt không cần truy vấn trong câu lệnh SELECT * trong sqlserver . Mình ví dụ: Các bạn có một table table_user bao gồm 50 column. Nếu các bạn viết: SELECT ...

Bài viết hôm nay, mình sẽ hướng dẫn các bạn cách loại bỏ những cột đặc biệt không cần truy vấn trong câu lệnh SELECT * trong sqlserver.

Mình ví dụ: Các bạn có một table table_user bao gồm 50 column.

SELECT * FROM TABLE SQLSERVER

Nếu các bạn viết: SELECT * FROM tbl_user thì Sql sẽ trả về dữ liệu cho chúng ta 50 column. 

Nhưng ý đồ, mình muốn là mình muốn chỉ lấy ra 45 column thôi và loại bỏ các column như: tendangnhap, matkhau...

Cách để thực hiện:

Cách 1: Nếu bạn nào có cài đặt Sql Prompt thì các bạn chỉ cần gõ:

Select * from tbl_user => rồi các bạn để dấu nháy con trỏ chuột xuống gần dấu (*) và nhấn phím tab, thì tất cả các filed column sẽ hiện thị ra, và column nào bạn ko muốn lấy thì có thể xóa.

Nhưng cách này chưa tối ưu, nếu máy bạn không có cài Sql Prompt thì mình làm theo cách 2 nhé.

Cách 2: Sử dụng trực tiếp trong câu lệnh truy vấn .

+ Cách thực hiện truy vấn là:

1. Đầu tiên chúng ta sẽ truy vấn lấy ra tên tất cả các column trong table user

2. Filter những column không lấy ra trong  câu lệnh mới trả về

3. Nếu biến đó vào thay câu lệnh select *

Ví dụ: 

DECLARE @Temp NVARCHAR(MAX)  
DECLARE @SQL NVARCHAR(MAX)  
DECLARE @table NVARCHAR(Max)
  
SET @table = 'tbl_user' -- nhập tên table cần selected
SET @Temp = '  
SELECT @Temp = @Temp + COLUMN_NAME + ', '  
FROM INFORMATION_SCHEMA.COLUMNS  
WHERE TABLE_NAME ='tbl_user'   
AND COLUMN_NAME NOT IN ('tendangnhap', 'matkhau')  -- nhập những trường ko cần select ra
  
SET @SQL = 'SELECT ' + SUBSTRING(@Temp, 0, LEN(@Temp)) +' FROM [tbl_user]'  
EXECUTE SP_EXECUTESQL @SQL  

Câu lệnh này sẽ lấy ra tất cả dữ liệu trong table tbl_user và loại bỏ 2 cột: tendangnhap và matkhau.

HAVE FUN:)

Tags:
0