Дифференцировать экспоненты в T-SQL

В SQL Server 2017 (14.0.2)

Рассмотрим следующую таблицу:

CREATE TABLE expTest
(
    someNumbers [NVARCHAR](10) NULL
)

И допустим, вы заполняете таблицу некоторыми значениями:

INSERT INTO expTest VALUES('²', '2')

Почему следующий SELECT возвращает обе строки?

SELECT * 
FROM expTest 
WHERE someNumbers = '2'

Разве nvarchar не следует понимать, что «²» — это юникод, а «2» — это отдельное значение? Как (без использования функции UNICODE()) определить эти данные как неэквивалентные?

Какая у вас настройка сопоставления?

Dale K 23.04.2019 22:39

Возможный дубликат SQL Server удаляет юникод в запросе на равенство

Luis Cazares 23.04.2019 22:42

Например, вы не используете строки UNICODE, но проблема связана с используемой вами сортировкой.

Luis Cazares 23.04.2019 22:43

Кажется, у вас есть синтаксическая ошибка в вашем операторе вставки. @christopher

Mark Kram 23.04.2019 22:55

@DaleBurrell SQL_Latin1_General_CP1_CI_AS

Christopher 23.04.2019 22:56
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
5
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Здесь — это рабочий пример db<>. Это показывает следующее:

  • Ваше наблюдение верно, даже если значения вводятся как константы национального набора символов.
  • Версии символов «ASCII» на самом деле разные.
  • Проблема исчезает при сопоставлении с учетом регистра.

Я думаю, что показатель степени просто рассматривается как другой «регистр» числа, поэтому они считаются одинаковыми при сопоставлении без учета регистра.

Сравнение — это то, что вы ожидаете от сортировки с учетом регистра.

Другие вопросы по теме

SQL Server FOR JSON: запросите список значений и используйте первые два символа в качестве ключа в объекте json
Устранение неполадок «Произошла ошибка, связанная с сетью или конкретным экземпляром, при установлении подключения к SQL Server» при подключении к Azure SQL Server
Есть ли рабочий вариант, который может выбрать наименьшее число (числа) для моего случая?
Запуск решения/пакета SSIS удаляет компоненты из задачи потока данных
Восстановление резервной копии SQL-сервера через python запускается, но не завершается
Как сохранить несколько столбцов в 1 столбце как значение в sql
Как удалить базу данных, если в SQL Server существует переменная с ее логическим именем?
QT QSqlDatabase, подключенная к MSSql, извлекает строки ОЧЕНЬ медленно
Преобразование INT в строку при использовании функции STUFF в SQL Server 2016
Как мы можем проверить устойчивость соединения в Entity Framework Core