Подтвердить что ты не робот

Как найти значения во всех шапках в SQL Server?

Как найти значения столбцов во всех кепках? Как LastName = 'SMITH' вместо 'Smith'

Вот что я пытался...

SELECT *
  FROM MyTable
 WHERE FirstName = UPPER(FirstName)
4b9b3361

Ответ 1

Вы можете принудительно сортировать регистр,

select * from T
  where fld = upper(fld) collate SQL_Latin1_General_CP1_CS_AS

Ответ 2

Try

 SELECT *
  FROM MyTable
 WHERE FirstName = UPPER(FirstName) COLLATE SQL_Latin1_General_CP1_CS_AS

Эта сортировка позволяет проводить проверки, чувствительные к регистру.

Если вы хотите изменить настройку своей базы данных, поэтому вам не нужно указывать учетную запись в ваших запросах, вам нужно сделать следующее (из MSDN):

1) Убедитесь, что у вас есть вся информация или сценарии, необходимые для воссоздания ваших пользовательских баз данных и всех объектов в них.

2) Экспортируйте все свои данные с помощью такого инструмента, как утилита bcp.

3) Отбросьте все пользовательские базы данных.

4) Перестройте основную базу данных, указав новую сортировку в свойстве SQLCOLLATION команды setup. Например:

Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName 
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ] 
/SQLCOLLATION=CollationName

5) Создайте все базы данных и все объекты в них.

6) Импортируйте все свои данные.

Ответ 3

По умолчанию SQL-сравнения не зависят от регистра.

Ответ 4

Вам нужно использовать сортировку сервера, которая чувствительна к регистру так:

SELECT * 
FROM MyTable
WHERE FirstName = UPPER(FirstName) Collate SQL_Latin1_General_CP1_CS_AS

Ответ 5

Не могли бы вы использовать это как предложение where?

WHERE PATINDEX(FirstName + '%',UPPER(FirstName)) = 1

Ответ 6

Посмотрите здесь

Кажется, у вас есть несколько вариантов

  • введите строку в VARBINARY (длина)

  • используйте COLLATE для указания сортировки с учетом регистра

  • вычислить BINARY_CHECKSUM() строк для сравнения

  • изменить столбцы таблицы Свойство COLLATION

  • использовать вычисленные столбцы (неявный расчет VARBINARY)

Ответ 7

Попробуйте это

SELECT *
FROM MyTable
WHERE UPPER(FirstName) COLLATE Latin1_General_CS_AS = FirstName COLLATE Latin1_General_CS_AS

Ответ 9

Я создал простой UDF для этого:

create function dbo.fnIsStringAllUppercase(@input nvarchar(max)) returns bit

    as

begin

    if (ISNUMERIC(@input) = 0 AND RTRIM(LTRIM(@input)) > '' AND @input = UPPER(@input COLLATE Latin1_General_CS_AS))
        return 1;

    return 0;
end

Затем вы можете легко использовать его в любом столбце в разделе WHERE.

Чтобы использовать пример OP:

SELECT *
FROM   MyTable
WHERE  dbo.fnIsStringAllUppercase(FirstName) = 1