Параметры сортировки по умолчанию обеспечат требуемую функциональность (сопоставление без учета регистра) по умолчанию, однако, если вы хотите принудительно выполнить сопоставление без учета, если ваше сопоставление чувствительно к регистру, вы можете использовать функцию UPPER
, но помните, что это вызоветполное сканирование вашей таблицы (и, следовательно, может иметь некоторые важные последствия для производительности).
Чтобы проверить текущее сопоставление:
SELECT DATABASEPROPERTYEX('DbName', 'Collation') SQLCollation;
Это даст вам сопоставление, например Latin1_General_CI_AS
Здесь CI
означает Case Insensitive
Если у вас есть это, тогда вы можете идти.Если нет, вы могли бы сделать:
SELECT * from [dbo].[$cubeTable] WHERE UPPER([active]) = 'TRUE'
Но это отсканирует всю вашу таблицу.
Если у вас есть возможность изменить свою схему, вы можете принудительно установить параметры сортировки для столбца, если хотите:
CREATE TABLE [#CollationTest]
(
[MyColumnName] VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS
)
INSERT INTO [#CollationTest] ([MyColumnName]) VALUES ('Value123')
INSERT INTO [#CollationTest] ([MyColumnName]) VALUES ('value123')
SELECT * FROM [#CollationTest] WHERE [MyColumnName] = 'value123' -- Returns 2 rows
DROP TABLE [#CollationTest]