2010-09-05 85 views
-1

我有客戶的詳細信息,有姓氏列,字母順序不工作

一些記錄包含在名稱前面的空格和背部,

我想做的字母順序,但不能正常工作,

PLZ CHK這個屏幕截圖,我不能猜到WHA那朵的確切原因,

alt text

+0

這是我最喜歡的問題標題很長一段時間。 – 2010-09-05 15:02:20

回答

5

space被視爲字符,那麼在對數據進行排序時將考慮它。

您可能想要在插入數據庫之前使用trim()數據。

+0

是的,但已經是我的數據庫記錄大約3000,所以我跑這個查詢 更新CUSTOMER設置LNAME =修剪(LNAME) – Bharanikumar 2010-09-05 05:59:17

+0

從TRIM(cLname)ASB – Bharanikumar 2010-09-05 06:01:26

+0

即使我沒有得到正確的順序 – Bharanikumar 2010-09-05 06:01:50

0

leonardys是對的,你應該在他們進入數據庫之前調整所有的輸入。然而,單靠這一點並不能解決人們在標點符號等名稱前面出現的問題。

假設這個數據庫反映用戶輸入,你應該做一個更徹底的輸入驗證。只允許按字母順序輸入(如果需要,還有重音符號)是一個很好的解決方案(因爲您只希望使用真實姓名)。與其試圖消除不需要的字符,不如將輸入限制爲允許的字符。然而,空格不應該被限制,因爲許多有效的名字都包含空格(例如Ann Mary),因此你應該在輸入之後修整你的輸入。

至於更新數據庫,這將是棘手。修剪只會解決空間問題。如果這是基於用戶的數據,請嘗試詢問具有非法字符的人更新他們的個人資料,並在他們這樣做之前不讓他們訪問該網站。你可以原諒它作爲數據庫升級或其他技術問題。

希望我幫了忙。

+0

謝謝,我應該如何處理現有記錄, 我需要簡單地按順序排列 – Bharanikumar 2010-09-05 06:20:09

+0

嗯,這是真正的基於用戶的互聯網網站的輸入? – sprite 2010-09-05 06:42:24

+0

您可以在代碼中使用自定義比較器,或者在可能的情況下(或者您正在使用的任何數據庫)在SQL中執行相同的操作,忽略除字母字符以外的任何內容。請記住,這種方法可能會帶來輕微的性能損失(或更多,取決於您的數據大小)。 – sprite 2010-09-05 06:46:38