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

Tại sao SELECT DISTINCT a, b FROM ... trả về ít bản ghi hơn SELECT DISTINCT A + '|' + B TỪ ...?

Dấu cách ở cuối có thể gây ra điều này. Đối với các so sánh chuỗi, chúng bị bỏ qua.

CREATE TABLE #T
(
a varchar(10),
b varchar(10),
c varchar(10)
)

INSERT INTO #T
SELECT 'a ' as a, 'b' as b, 'c ' as c union all
SELECT 'a' as a, 'b' as b, 'c ' as c

SELECT DISTINCT a, b, c  
FROM #T /*1 result*/

SELECT DISTINCT a + '|' + b + '|' + c + '|'   
FROM #T /*2 results*/


SELECT DISTINCT LTRIM(RTRIM(a)) + '|' + LTRIM(RTRIM(b)) + '|' +
                LTRIM(RTRIM(c)) + '|'   
FROM #T /*1 result*/


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao một CTE đệ quy trong Transact-SQL lại yêu cầu UNION ALL chứ không phải UNION?

  2. Lấy boolean từ so sánh ngày tháng trong t-sql select

  3. Làm cách nào để lấy kết xuất SQL của cơ sở dữ liệu SQL Server 2008?

  4. Có cách nào để lặp qua biến bảng trong TSQL mà không sử dụng con trỏ không?

  5. Cài đặt Mẫu cơ sở dữ liệu AdventureWorks trong Microsoft SQL Server 2012