wszystkimTest wielkimi literami - T-SQL
Jak mogę sprawdzić, czy określony znak varchar lub cały ciąg jest wielkimi literami w T-SQL? Idealnie chciałbym napisać funkcję, która sprawdzi, czy postać jest duża, a następnie mogę ją zastosować do generycznego varchara. Powinien zwrócić wartość false w przypadku znaków niefazowych. Interesują mnie tylko postacie w języku angielskim.
Pracuję z T-SQL w SQL Management Studio, a ja próbowałem ciągnąc rekordy zaczynające się od liter? Z tabeli w ten sposób:
select * from TABLE
where SUBSTRING(author,1,1) != LOWER(SUBSTRING(author,1,1))
Które zwraca 0 rekordów, ale wiem, istnieją zapisy zaczynające się od wielkich i małych liter.
Dzięki
EDIT: Ponieważ zarówno podiluska i joachim-isaksoon pomyślnie odpowiedział na moje pytanie (obie metody działają do moich celów), czy ktoś myśli tłumacząc, która byłaby najbardziej skuteczna metoda w użyciu kwerendy tabelę z dużą liczbą rekordów, aby odfiltrować rekordy z autorami zaczynającymi się od dużej litery lub bez?
"Znaki nieelegatywne" w jakim języku? Czy zwróci true lub false na 'Π'? (wielkie litery 'π') –
Dzięki Martin, poprawiłem moje pytanie. Nie mam nic przeciwko temu, co zwraca dla znaków alfabetu angielskiego. – Danzomida
Odpowiedź na edycję części: nie powinno to mieć znaczenia, oba zapytania powinny wykonać to samo. Tak czy inaczej, musisz przeskanować całą tabelę i pobrać wartość "autor" dla każdego wiersza - a to zajmuje 99% czasu zapytania. Funkcje takie jak 'LOWER()', 'UNICODE()' są bezsensowne pod względem wydajności i niezależnie od tego, co wybierzesz, nie powinno to mieć znaczenia. Powiedziawszy to, nadal sugeruję, abyś przetestował oba zapytania na faktycznych danych i sprawdził, czy działa lepiej. –