web-dev-qa-db-ja.com

SQL Serverのすべてのキャップの値を見つける方法は?

オールキャップの列値を見つけるにはどうすればよいですか?お気に入り LastName = 'SMITH' の代わりに 'Smith'

ここに私が試していたものがあります...

SELECT *
  FROM MyTable
 WHERE FirstName = UPPER(FirstName)
30
daveomcd

大文字と小文字を区別する照合を強制できます。

select * from T
  where fld = upper(fld) collate SQL_Latin1_General_CP1_CS_AS
53
Alex K.

試して

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

この照合により、大文字と小文字を区別した比較が可能になります。

クエリで大文字と小文字を区別する照合を指定する必要がないようにデータベースの照合を変更する場合は、次の手順を実行する必要があります( from MSDN ):

1)ユーザーデータベースとその中のすべてのオブジェクトを再作成するために必要なすべての情報またはスクリプトがあることを確認します。

2)bcpユーティリティなどのツールを使用して、すべてのデータをエクスポートします。

3)すべてのユーザーデータベースを削除します。

4)setupコマンドのSQLCOLLATIONプロパティで新しい照合を指定して、masterデータベースを再構築します。例えば:

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

5)すべてのデータベースとその中のすべてのオブジェクトを作成します。

6)すべてのデータをインポートします。

7
Joe Ratzer

次のように大文字と小文字を区別するサーバー照合を使用する必要があります。

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

デフォルトでは、SQL比較では大文字と小文字が区別されません。

1
drdwilcox

試して

SELECT *
  FROM MyTable
 WHERE FirstName = LOWER(FirstName)
0
Despedo

そのための簡単な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
0
isapir

これをwhere句として使用してみてください。

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

ご覧ください こちら

いくつかのオプションがあるようです

  • 文字列をVARBINARY(length)にキャストします

  • cOLLATEを使用して、大文字と小文字を区別する照合を指定します

  • 比較する文字列のBINARY_CHECKSUM()を計算します

  • テーブル列のCOLLATIONプロパティを変更する

  • 計算列を使用する(VARBINARYの暗黙的な計算)

0
Richard Friend
0
hkravitz

これを試して

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