Как включить условие запроса ToUpper () INSIDE? - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть этот запрос, который должен получить все результаты, где active = TRUE в таблице, но я хочу убедиться, что пользователи, скажем, изменили активное значение в таблице, чтобы сказать "True" или "tRue", которые запрос распознаетэто как задумано, ИСТИНА, каким-то образом применяя Uppercase ON к условию запроса все время

$Table = Query "SELECT * from [dbo].[$cubeTable] WHERE [active] = 'TRUE'.ToUpper()"
write-host $Table += $row.Item("active")

Обратите внимание, это то, что у меня есть, но, конечно, выдает ошибку

WHERE [active] = 'TRUE'.ToUpper()"

Исключение вызывает "Fill" с аргументом (ами) "1": "Невозможно вызвать методы в varchar."

1 Ответ

0 голосов
/ 18 сентября 2018

Параметры сортировки по умолчанию обеспечат требуемую функциональность (сопоставление без учета регистра) по умолчанию, однако, если вы хотите принудительно выполнить сопоставление без учета, если ваше сопоставление чувствительно к регистру, вы можете использовать функцию 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...