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)
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)
Można wymusić sortowanie z uwzględnieniem wielkości liter;
select * from T
where fld = upper(fld) collate SQL_Latin1_General_CP1_CS_AS
Bądź domyślny porównania SQL są wielkości liter.
Czy możesz spróbować użyć tego jako klauzuli gdzie?
WHERE PATINDEX(FirstName + '%',UPPER(FirstName)) = 1
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)
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
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.
Try This
SELECT *
FROM MyTable
WHERE UPPER(FirstName) COLLATE Latin1_General_CS_AS = FirstName COLLATE Latin1_General_CS_AS
Można znaleźć dobry przykład w Case Sensitive Search: Fetching lowercase or uppercase string on SQL Server
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
który powinien działać. Jaki uzyskałeś wynik? – Polynomial
@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