Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Selekcja rekordów z małej/wielkiej litery

Hejże

Jak zrobić selekcję rekordów, które w jakiejś kolumnie mają stringi zaczynające się od małej litery ?

Wie ktoś ?
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: Selekcja rekordów z małej/wielkiej litery



SELECT *
FROM (
SELECT 'aBC' AS A FROM DUAL UNION ALL
SELECT 'ABC' AS A FROM DUAL
) L0
WHERE INSTR(A, LOWER(SUBSTR(A, 1, 1)), 1, 1) = 1

Lukasz K.

Lukasz K. Communication &
Public Speaking
Consultant

Temat: Selekcja rekordów z małej/wielkiej litery

Oracle 10g

select * from tabela where CHR(substr(kolumna,1,1)) between 97 and 122;
Łukasz Schabek

Łukasz Schabek Architekt Rozwiązań

Temat: Selekcja rekordów z małej/wielkiej litery

Lukasz K.:
Oracle 10g

select * from tabela where CHR(substr(kolumna,1,1)) between 97 and 122;

nice ;) Twoje zapytanie będzie szybsze.
Igor Piotr I.

Igor Piotr I. IT manager/Senior
Oracle Developer

Temat: Selekcja rekordów z małej/wielkiej litery

select * from tabela where CHR(substr(kolumna,1,1)) between 97 and 122;

takie coś nie zadziała ?!

Jesli już to
select * from tabela where ASCII(substr(kolumna,1,1)) between 97 and 122;

ale co gdy ?

select 1 from dual where ASCII(substr('ślisko',1,1)) between 97 and 122;

więc polecam

select * from [tab] where REGEXP_INSTR([kolumna],'[[:lower:]]') = 1
Igor Piotr Idzior edytował(a) ten post dnia 06.11.08 o godzinie 15:09
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Selekcja rekordów z małej/wielkiej litery

Lukasz K.:
Oracle 10g

select * from tabela where CHR(substr(kolumna,1,1)) between 97 and 122;

Dzięki serdeczne

Przerobiłem to dla MySQLa:

SELECT Pole FROM Tabela
WHERE ASCII(SUBSTRING(Pole FROM 1 FOR 1)) BETWEEN 97 AND 122 LIMIT 0,100
Igor Piotr I.

Igor Piotr I. IT manager/Senior
Oracle Developer

Temat: Selekcja rekordów z małej/wielkiej litery

pamiętaj że nie obsługujesz polskich małych znaczków !
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Selekcja rekordów z małej/wielkiej litery

Dzięki, ale nie przeszkadza.
A jak by było ze znaczkami ?
Igor Piotr I.

Igor Piotr I. IT manager/Senior
Oracle Developer

Temat: Selekcja rekordów z małej/wielkiej litery

nie znam się bardzo na mysql'u ale kombinował bym tak

SELECT * FROM [tab] 
WHERE SUBSTRING([kol] FROM 1 FOR 1) REGEXP '[[:lower:]]'


czekaj coś tu poputałemIgor Piotr Idzior edytował(a) ten post dnia 06.11.08 o godzinie 15:42
Lukasz K.

Lukasz K. Communication &
Public Speaking
Consultant

Temat: Selekcja rekordów z małej/wielkiej litery

Polskie kody ascii:
Ą - 164
ą - 165
Ć - 143
ć - 134
Ę - 168
ę - 169
Ł - 157
ł - 136
Ń - 227
ń - 228
Ó - 224
ó - 162
Ś - 151
ś - 152
Ź - 141
ź - 171
Ż - 189
ż - 190
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Selekcja rekordów z małej/wielkiej litery

Lukasz K.:
Polskie kody ascii:
Ą - 164
ą - 165
Ć - 143
ć - 134
Ę - 168
ę - 169
Ł - 157
ł - 136
Ń - 227
ń - 228
Ó - 224
ó - 162
Ś - 151
ś - 152
Ź - 141
ź - 171
Ż - 189
ż - 190

Dzięki man, czyli trzeba by dodać AND IN (...)
Lukasz K.

Lukasz K. Communication &
Public Speaking
Consultant

Temat: Selekcja rekordów z małej/wielkiej litery

Sprawdz czy sa dobre te kody, bo nie jestem pewien.
Najlepiej poszukac w necie, jest duzo stron.

OR IN (...)Lukasz K. edytował(a) ten post dnia 06.11.08 o godzinie 15:54
Igor Piotr I.

Igor Piotr I. IT manager/Senior
Oracle Developer

Temat: Selekcja rekordów z małej/wielkiej litery

jeszcze takie coś mi do głowy przychodzi

select *
from [tab] where SUBSTRING(id,1,1) = lower(SUBSTRING(id,1,1))

konto usunięte

Temat: Selekcja rekordów z małej/wielkiej litery

Igor Piotr Idzior:
jeszcze takie coś mi do głowy przychodzi

select *
from [tab] where SUBSTRING(id,1,1) = lower(SUBSTRING(id,1,1))

Eleganckie, ale chyba nieindeksowalne?
Może "LEFT()" byłoby lepsze, ale nie jestem pewien.

konto usunięte

Temat: Selekcja rekordów z małej/wielkiej litery

PG ma coś takiego jak lower - można zrobić indeks na lower(substring(kolumna,1,1)). Tyle, że - to chyba raczej nie ma sensu - statystycznie i tak sporo danych złapie się do takiego indeksu i będzie to mało efektywne.
Ja bym jeszcze regexp dodał do rozwiązań. Może to i armata na muchę, ale strzela szybko i skutecznie. :)

konto usunięte

Temat: Selekcja rekordów z małej/wielkiej litery

Lukasz K.:
Polskie kody ascii:
Ą - 164
[...]

Nie ma czegoś takiego jak polskie kody ASCII. ASCII jest siedmiobitowy i nie definiuje co znajduje się powyżej 127. Podałeś kody z jakiegoś kodowania będącego pewnie rozszerzeniem ASCII. Jeśli kolumna będzie używała innego kodowania to się wszystko posypie.

Wszyscy, którzy ciągle nie wiedzą jak kodowane są napisy w komputerach powinni przeczytać: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

konto usunięte

Temat: Selekcja rekordów z małej/wielkiej litery

Wojciech Malinowski:
Lukasz K.:
Polskie kody ascii:
Ą - 164
[...]

Nie ma czegoś takiego jak polskie kody ASCII. ASCII jest siedmiobitowy i nie definiuje co znajduje się powyżej 127. Podałeś kody z jakiegoś kodowania będącego pewnie rozszerzeniem ASCII. Jeśli kolumna będzie używała innego kodowania to się wszystko posypie.

Wszyscy, którzy ciągle nie wiedzą jak kodowane są napisy w komputerach powinni przeczytać: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

Z jednym się nie mogę zgodzić w tym artykule:
You probably think I'm going to talk about very old character sets like EBCDIC here. Well, I won't. EBCDIC is not relevant to your life. We don't have to go that far back in time.

Odpowiedź: nie zawsze :)

Co do samego kodowania, to można się zdecydować w całej bazie na jakiś standard jednobajtowy i się go trzymać.

Patrz np.:
http://www.arczer.neostrada.pl/ar005.htmPiotr Likus edytował(a) ten post dnia 08.11.08 o godzinie 11:49
Marcin K.

Marcin K. Kredyty, back office

Temat: Selekcja rekordów z małej/wielkiej litery

A dwa akapity wcześniej ostrzega:

Before I get started, I should warn you that if you are one of those rare people who knows about internationalization, you are going to find my entire discussion a little bit oversimplified.



Wyślij zaproszenie do