Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana saya bisa mendapatkan catatan bernilai NULL dari sebuah tabel?

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

NULL nilai akan diurutkan terlebih dahulu.

Saat menggabungkan nilai dengan NULL hasilnya NULL jadi First_Name+Last_Name akan menjadi NULL jika ada yang NULL .

cast(Staff_ID as varchar(10))+... apakah ada jaminan pesanan yang Anda inginkan untuk kasus ketika First_Name+Last_Name adalah tidak NULL (Saya berasumsi Staff_ID adalah int ).

Dan pesanan tambahan dengan kolom Staff_ID apakah ada untuk menjamin urutan yang Anda inginkan untuk semua baris di mana First_Name+Last_Name adalah NULL

Perbarui

Anda dapat membuat kueri secara dinamis menggunakan INFORMATION_SCHEMA.COLUMNS. Ini mungkin melakukan apa yang Anda inginkan. Catatan, ini tidak diuji untuk semua jenis tipe data.

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)

Perbarui 2

Versi non dinamis menggunakan XML sebagai gantinya.

;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')

Perbarui 3

Jika Anda mengetahui kunci utama tabel Anda dan tidak keberatan mengetik klausa where, Anda dapat menggunakan ini daripada menggunakan 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. Kueri lintas basis data, menggabungkan kelebihan dan kekurangan

  2. Nilai NULL dikecualikan. Mengapa?

  3. Penyebaran LocalDB pada PC klien

  4. Apa itu STATISTIK IO di SQL Server?

  5. T-SQL:pisahkan dan gabungkan nilai yang dipisahkan koma