Czy można zamienić tekst na liczbę w zapytaniu MySQL? Mam kolumnę z identyfikatorem składającym się z nazwy i liczby w formacie „nazwa-numer”. Kolumna ma typ VARCHAR. Chcę posortować wiersze według liczby (wiersze o tej samej nazwie), ale kolumna jest sortowana według kolejności znaków, tj
name-1
name-11
name-12
name-2
Jeśli usunę liczbę, czy mogę zamienić liczbę „varchar” na liczbę „rzeczywistą” i użyć jej do sortowania wierszy? Chciałbym uzyskać następujące zamówienie.
name-1
name-2
name-11
name-12
Nie mogę przedstawić liczby w osobnej kolumnie.
edytowane 2011-05-11 9:32
Znalazłem następujące rozwiązanie ... ORDER BY column * 1
. Jeśli nazwa nie będzie zawierała żadnych liczb, to czy warto skorzystać z tego rozwiązania?
name
może być dowolną sekwencją liter.Odpowiedzi:
To powinno działać:
źródło
Możesz użyć
SUBSTRING
iCONVERT
:Gdzie
name_column
jest kolumna z wartościami „nazwa-”.SUBSTRING
Usuwa wszystko przed szóstym znaku (czyli „Imieniny” prefix), a następnieCONVERT
konwertuje pozostały do rzeczywistej liczby całkowitej.AKTUALIZACJA : Biorąc pod uwagę zmieniające się okoliczności w komentarzach (tj. Prefiks może być dowolny), będziesz musiał dodać
LOCATE
do miksu:To oczywiście zakłada, że nienumeryczny prefiks nie zawiera żadnych myślników, ale odpowiedni komentarz mówi, że:
więc powinno to być bezpieczne założenie.
źródło
SUBSTRING(name_column, 6)
. Wiem, opublikowałeś to, kiedy nam tego nie powiedział ...Po prostu użyj CAST,
Typ wyniku rzutowania może mieć jedną z następujących wartości:
źródło
Możesz użyć CAST (), aby przekonwertować ciąg znaków na int. na przykład
SELECT CAST('123' AS INTEGER);
źródło
SELECT CAST('123' AS SIGNED INTEGER);
lubSELECT CAST('123' AS UNSIGNED INTEGER);
sprawić, by działało.źródło
jeden prosty sposób WYBIERZ „123” + 0
źródło
Aby uzyskać numer, spróbuj użyć, a
SUBSTRING_INDEX(field, '-', 1)
następnie przekonwertuj.źródło
jeśli kluczem podstawowym jest ciąg w formacie takim jak
ABC / EFG / EE / 13/123 (numer kolejny),
tego rodzaju ciąg można łatwo użyć do sortowania za pomocą separatora („/”)
możemy użyć następującego zapytania, aby zamówić tabelę z tego typu kluczem
źródło
źródło
Ogólny sposób na zrobienie:
źródło