Sıralama adıyla, ancak tırnak görmezden?

3 Cevap php

Adında bir sütunu sıralamak ve tırnak görmezden yine de var olduğunu, bazı öğeler olmak?

Örneğin:

"Bu harika"

Başka bir makale

Madde 2

Merhaba

Sıralama olacaktır olarak:

Başka bir makale

Madde 2

Merhaba

"Bu cool"

Tırnak veritabanında zaten ...

3 Cevap

Kullandığınız dil ne bağlıdır. MS SQL, ben DEĞİŞTİR komutunu kullanın. Ben göre sıralama olduğum bir sütun ilk isim, bir masa, kullanıcılar varsa Yani, dize dışında tüm çift tırnak soyarak ki bunu:

SELECT     *
FROM         dbo.Users
ORDER BY REPLACE(firstName, '"', '')

Kabul edilebilir ve TRIM daha hızlı olması () veya () tabanlı çözüm, sadece ilk karakteri bir alıntı olma (veya uzantısı olmayan bir alfanümerik karakteri) odaklanmak için DEĞİŞTİR olabilecek bir hile.

ORDER BY CASE LEFT(myCol, 1) 
      WHEN '"' THEN REPLACE(myCol, '"', '')
      ELSE myCol
    END CASE

Genel olarak, daha büyük bir veri kümesi için, işlem bu tür bir görüntüleme amacıyla sütun karşı amaçlı sorgulamak için sütun ilavesi ile, örneğin, yük zaman yapılmalıdır.

SELECT *
 FROM table
ORDER BY CASE WHEN len(col) >= 2
              THEN REPLACE(LEFT(COL, 1), '"', '') 
                 + RIGHT(LEFT(col, LEN(col)-1), LEN(LEFT(col, LEN(col)-1))-1) 
                 + REPLACE(RIGHT(col, 1), '"', '')
              ELSE col
         END

ORDER BY olarak, ben 1 'içinde' & değiştirerek çift tırnak ortadan '' tarafından son karakterler. Tabii ki col uzunluğu> = 2 geçerlidir bu.