Jump to content
php.lv forumi

Order by Intval and string in Varchar


goma smile

Recommended Posts

 Protams, ja vienmēr izmanto milimetros, ja ir vēl citās vienības tas , noteikti vajadzes aizstāt visas vērtības.

SELECT *
FROM name_of_table
ORDER BY `color_column` ASC, SUBSTRING_INDEX(`size_column`, 'mm', 1) ASC
LIMIT 0 , 30
Link to comment
Share on other sites

 

 Protams, ja vienmēr izmanto milimetros, ja ir vēl citās vienības tas , noteikti vajadzes aizstāt visas vērtības.

SELECT *
FROM name_of_table
ORDER BY `color_column` ASC, SUBSTRING_INDEX(`size_column`, 'mm', 1) ASC
LIMIT 0 , 30

 

ne vienmēr tie ir mm, tie var būt kg, gabali, tur ir visādas sajauktas mērvienības, klasifikātori...

Link to comment
Share on other sites

Variants ir mēģināt konvertēt un, ja ir teksts, tas konvertējas par 0. Tā kā visiem tekstiem konvertācijas rezultāts ir 0, tad tie tālāk tiek kārtoti leksikogrāfiski.
Bet šeit ir problēma, ka katrs convert mēģinājums radīs warningu, ja tas nebūs skaitlis.
 

SELECT *
FROM test
ORDER BY CONVERT(val, SIGNED INTEGER) ASC, val ASC

P.S.

Netā atradu variantu, kur skaitļi tiek uzpadoti ar 0, lai kārtotos pareizi:

http://sqlfiddle.com/#!2/7973e/21

Edited by codez
Link to comment
Share on other sites

Tev ir jāuzraksta mazs skripts, kurš izanalizē lauka vērtību un izdomā attiecīgo kārtošanas vērtību/skaitli. Šo skaitli noglabā jaunā laukā

Visām neskaitļa vērtībā liec 0 vai 99999999999 - atkartībā no tā vai gribi neskaitļa vērtībās pirmās vai pēdējās

 

 

[esosais_lauks]       [jaunais_lauks]

Zaļa                         0
pelēka                     0
melna                      0

22mm                      22

23mm                      23

1000mm                  1000

2kg                          2000

 

 

Kārtošanu taisi šādi

ORDER BY jaunais_lauks ASC, esosais_lauks ASC

 

Skriptu liec CRONā un palaid reizi stundā. Tādā veidā tev nevajadzēs veikt nekādas izmaiņas esošajā sistēmā

Link to comment
Share on other sites

Variants ir mēģināt konvertēt un, ja ir teksts, tas konvertējas par 0. Tā kā visiem tekstiem konvertācijas rezultāts ir 0, tad tie tālāk tiek kārtoti leksikogrāfiski.

Bet šeit ir problēma, ka katrs convert mēģinājums radīs warningu, ja tas nebūs skaitlis.

 

SELECT *
FROM test
ORDER BY CONVERT(val, SIGNED INTEGER) ASC, val ASC

P.S.

Netā atradu variantu, kur skaitļi tiek uzpadoti ar 0, lai kārtotos pareizi:

http://sqlfiddle.com/#!2/7973e/21

 

Cepums paldies

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...