我们正在开放我们的应用程序,以支持多种语言。我们在此过程中遇到的一个问题是我们为客户提供的功能。想象一下,用户会看到3个字段。
从用户体验的角度来看,如果您选择所有客户“从”和“到”被禁用
代码中发生的情况是,如果客户选择“所有客户”,我们会查找客户名称大于或等于“”(空白)且小于或等于“}}}}}}的所有客户记录“(在ANSI中可以正常工作)。
当我们在名字的第一个字母中放入一个中文字符时,这不起作用,因为中文字形的代码大于“}”。 UTF-8中的字符是“最后一个字符”,所以我可以替换它吗?
我们打算支持多种语言,所以如果该解决方案仅适用于中文,则无法帮助我们。
由于 凯文
答案 0 :(得分:2)
当选择“所有客户”时,运行查询而不考虑客户名称。
是的,这意味着一种新的替代执行路径。是的,它并不“聪明”。
同时,它将更易读,更容易在以后进行故障排除。 KISS
答案 1 :(得分:1)
创建包含所有其他条件的基本select语句,然后根据是否填写from / to字段添加from / to条件,这不是更简单吗?像这样:
sql = "select a,b,c from users where c = 123";
if(!from.empty())
sql += " and name >= '" + from + "'";
if(!to.empty())
sql += " and name < '" + to + "'";
答案 2 :(得分:0)
为什么不使用CUSTOMERNAME IS NOT NULL呢?这将允许任何范围的字符,而不用担心任何特定文本编码中的第一个和最后一个字符是什么。
答案 3 :(得分:0)
我会修改应用程序的逻辑,这样您就不必搜索客户的名称以获取对它们的引用。
如果切换“所有客户”开关,只需将所有客户添加到客户列表中。