2011-11-17 12 views
18

Jak mogę znaleźć wartości kolumn we wszystkich limitach? Jak LastName = 'SMITH' zamiast 'Smith'Jak znaleźć wartości we wszystkich wersjach na serwerze SQL?

Oto, co starałem ...

SELECT * 
    FROM MyTable 
WHERE FirstName = UPPER(FirstName) 
+1

który powinien działać. Jaki uzyskałeś wynik? – Polynomial

+0

@Polynomial, po prostu uzyskuję takie same wyniki, jak gdybym uruchomił "WHERE FirstName = FirstName" ... może kodowanie musi być inne (jeśli to ma sens ... idk o czym mówię) – daveomcd

Odpowiedz

38

Można wymusić sortowanie z uwzględnieniem wielkości liter;

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

Bądź domyślny porównania SQL są wielkości liter.

0

Czy możesz spróbować użyć tego jako klauzuli gdzie?

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

Sprawdźcie here

wydaje masz kilka opcji

  • oddanych ciąg VARBINARY (długość)

  • użycie COLLATE do określenia wielkości liter sortowania

  • obliczyć e BINARY_CHECKSUM() strun porównać

  • zmienić kolumnę tabeli za Sortowanie właściwości

  • użytku obliczane kolumny (niejawny Obliczenie VARBINARY)

1

Musisz użyć sortowania serwera, który jest wielkość liter w taki sposób:

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

Spróbuj

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

Ta sortowanie umożliwia porównywanie wielkości liter.

Jeśli chcesz zmienić sortowanie bazy danych, dzięki czemu nie trzeba specifiy do sortowania wielkości liter w zapytaniach trzeba wykonać następujące czynności (from MSDN):

1) Upewnij się, że masz wszystkie informacje lub skrypty potrzebne do odtworzenia baz danych użytkowników i wszystkich obiektów w nich zawartych.

2) Eksportuj wszystkie swoje dane za pomocą narzędzia takiego jak narzędzie bcp.

3) Usuń wszystkie bazy danych użytkowników.

4) Przebuduj główną bazę danych, określając nowe sortowanie we właściwości SQLCOLLATION komendy setup. Na przykład:

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

5) Utwórz wszystkie bazy danych i wszystkie obiekty w nich.

6) Zaimportuj wszystkie swoje dane.

0

Try This

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

Stworzyłem prostą UDF na to:

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 

Wtedy łatwo można go używać na dowolnej kolumny w WHERE zdanie.

Aby użyć przykładu OP:

SELECT * 
FROM MyTable 
WHERE dbo.fnIsStringAllUppercase(FirstName) = 1 
Powiązane problemy