Wpis z mikrobloga

Tego nie ogarniam. Mam takie symbole symbole, czy mozna napisac takie sortowanie aby:

KFV/NS/000001/H/21
KFV/NS/000001/R/21
KFV/NS/000002/H/21
KFV/NS/000002/R/21

posortowało w ten sposob + nie zadzialalo jesli rekord nie bedzie mial takiego formatu

KFV/NS/000001/H/21
KFV/NS/000002/H/21
KFV/NS/000001/R/21
KFV/NS/000002/R/21

Prosze o rady/wskazówki.
Dzięki

#programowanie #sql
  • 9
via Wykop Mobilny (Android)
  • 0
@inrain88: PATINDEX w WHERE żeby wykluczyć rekordy nie pasujące do formatu, a potem sortowanie po SUBSTRING na REVERSE wartości, od tyłu, ew. szukanie pierwszego (n-tego) slasha przez CHARINDEX (MS SQL)
Ogólnie dłubanina i potworek, wygodniej by było mieć to rozbite ( )
@DarkAlchemy, @MarcinOrlowski, @janek_

Panowie, order po wierszach bez numerów, rosnąco, ustawiam alfabetycznie, a na koniec "indeksy asc" aby posortowało rosnąco juz po całosci (samych indeksach). Problem w tym, że działa, moze tak byc?

Nie moge uzywac zadnych substringów, splitów bo liczba znaków z lewej czy z prawej moze byc rozna...

SELECT indeksy from Table_1 order by
(select REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
REPLACE(indeksy, '9', ''), '8', ''), '7', ''), '6', ''), '5', ''), '4',
inrain88 - @DarkAlchemy, @MarcinOrlowski, @janek

Panowie, order po wierszach bez n...

źródło: comment_16137727976knFjolOZl4qRhJlxuwjLA.jpg

Pobierz
via Wykop Mobilny (Android)
  • 0
@inrain88: jak masz wersję SQL 2017 lub wyżej to możesz spróbować te REPLACE zamienić na jedno TRANSLATE ( ͡ ͜ʖ ͡)
I jak działa, to działa, pytanie tylko czy wydajność Ci odpowiada ( )
@DarkAlchemy: Server to jakis stary Oracle , chyba 11 (19 jest w dystrybucji). Wydajność nie jest tutaj kluczowa, Pani "Krysia" z księgowości u klienta się uparła ze tak chce mieć, ba, nawet że kiedyś tak działało ( ͡° ͜ʖ ͡°)
@inrain88
Hmm po screenie wygląda to jak MS SQL Server.

No i zróć uwagę, że wersje Oracle są numerowane 11, 12 i 18 ( ͡º ͜ʖ͡º) jeżeli ilość slashy zawsze będzie taka sama a różna ilość znaków to ja robiłem wycinanie nie substr czy trimami tylko na zasadzie "od drugiego do trzeciego slasha" no i do kolejnego sortowania zbierz to co jest "od trzeciego do czwartego slasha".