Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Сравнение на SQL Server 2008 и Unicode символи

Добре, така че малко повече копаене показва, че това почти сигурно се дължи на по-нов символ, тъй като това също работи с sql server 2008 еквиваленти на латинско сортиране, но не и с по-старите версии, т.е. работи с Latin1_General_100_CI_AS , но не и с Latin1_General_CI_AS . За да получите пълен списък на съпоставките, които правилно сравняват тези низове, които използвах:

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. Конструирайте дата от номер на година и седмица в MSSQL

  2. Вземете всички точки (кръгове с радиус), които се припокриват с дадена точка

  3. Поправете „Грешка при аритметично препълване при преобразуване на израз в тип данни int“ в SQL Server

  4. T-SQL как да промените стойността преди вмъкване

  5. Използване на колона TIME на SQL Server 2008 в декларацията на клас