2010-09-05 77 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