Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL Server 2008 i porównanie znaków Unicode

Okej, więc trochę więcej kopania pokazuje, że jest to prawie na pewno spowodowane nowszym charakterem, ponieważ działa to również z odpowiednikami porównywania łacińskiego w sql server 2008, ale nie ze starszymi wersjami, tj. działa z Latin1_General_100_CI_AS , ale nie z Latin1_General_CI_AS . Aby uzyskać pełną listę zestawień, które poprawnie porównują te ciągi, użyłem:

IF OBJECT_ID('Tempdb..#T') IS NOT NULL
    DROP TABLE #T;
IF OBJECT_ID('Tempdb..#V') IS NOT NULL
    DROP TABLE #V;

CREATE TABLE #V (A NVARCHAR(50), B NVARCHAR(50));
INSERT #V (A, B) VALUES (N'it᧠', N'it');

CREATE TABLE #T (Collation VARCHAR(500), Match BIT);

DECLARE @SQL NVARCHAR(MAX) = (SELECT N'INSERT #T (Collation, Match) 
                                        SELECT ''' + Name + ''', CASE WHEN A = B COLLATE ' + name + ' THEN 1 ELSE 0 END
                                        FROM    #V;'
                                FROM sys.fn_helpcollations()
                                FOR XML PATH(''), TYPE
                            ).value('.', 'NVARCHAR(MAX)');

EXECUTE sp_executesql @SQL;

SELECT  *
FROM    #T
WHERE   Match = 0;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przestawne kolumny dynamiczne, bez agregacji

  2. sql cross join - jaki pożytek z tego znalazł ktoś?

  3. IS NULL vs =NULL w klauzuli gdzie + SQL Server

  4. Jak przyspieszyć działanie serwera SQL za pomocą monitorowania wydajności bazy danych?

  5. Jak grupować relacje hierarchiczne razem w SQL Server