Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để lấy các bản ghi có giá trị NULL từ một bảng?

select Staff_ID, First_Name, Last_Name
from YourTable
order by cast(Staff_ID as varchar(10))+First_Name+Last_Name,
         Staff_ID

NULL giá trị sẽ được đặt hàng đầu tiên.

Khi nối một giá trị với NULL kết quả là NULL vì vậy First_Name+Last_Name sẽ là NULL nếu có cái nào là NULL .

cast(Staff_ID as varchar(10))+... có đảm bảo thứ tự bạn muốn cho trường hợp First_Name+Last_Name không NULL (Tôi giả sử là Staff_IDint ).

Và đơn đặt hàng thêm theo cột Staff_ID ở đó để đảm bảo thứ tự bạn muốn cho tất cả các hàng có First_Name+Last_Name NULL

Cập nhật

Bạn có thể tạo truy vấn động bằng cách sử dụng INFORMATION_SCHEMA.COLUMNS. Điều này có thể làm những gì bạn muốn. Lưu ý, điều này không được kiểm tra cho tất cả các loại dữ liệu.

declare @TableName sysname  = 'YourTable'
declare @Sql nvarchar(max) = 'select * from '+quotename(@TableName)+ ' order by '

select @Sql = @Sql+'+cast('+COLUMN_NAME+' as varchar(max))'
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = @TableName

exec (@Sql)

Cập nhật 2

Thay vào đó, một phiên bản không động sử dụng XML.

;with C as 
( 
  select *,
         row_number() over(order by (select 1)) as rn
  from YourTable
)
select C1.*
from C as C1
  cross apply (select *
               from C as C2
               where C1.rn = C2.rn
               for xml path('x'), type) as T(N)
order by T.N.value('count(/x/*)', 'int')

Cập nhật 3

Nếu bạn biết khóa chính của bảng và không ngại nhập mệnh đề where, bạn có thể sử dụng mệnh đề này thay vì sử dụng row_number() .

select Y1.*
from YourTable as Y1
order by (select *
          from YourTable as Y2
          where Y1.Staff_ID = Y2.Staff_ID
          for xml path('x'), type).value('count(/x/*)', 'int')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật một trường của bảng hiện có với Logic Tăng dần Tự động

  2. Nhập CSV trong SQL Server 2008

  3. SQL Server PDF Full-Text Search không hoạt động trên FileStream PDF File

  4. Cách cài đặt SQL Server trên Windows

  5. Làm cách nào để chọn dữ liệu của một bảng từ một cơ sở dữ liệu khác trong SQL Server?