比较像MySQL这样的MFC CString比较

时间:2016-05-09 13:45:03

标签: c++ mysql mfc compare c-strings

MySQL使用与CString::CompareNoCase不同的比较运算符进行排序,这导致了一些难以检测的错误。主要问题似乎是令牌_

我如何将CString与另一个CString进行比较,就像MySQL在使用ORDER BY field时比较字符串一样?

编辑: 可能是MySQL ORDER BY BINARY field使用与CString::operator<完全相同的比较函数吗?我当前的方法使用SORT BY fieldCString::CompareNoCase,如上所述,它们背后有不同的比较运算符。

1 个答案:

答案 0 :(得分:0)

CString::CompareNoCase()使用比较。 MySQL使用整理。

比较是严格的数字比较。语言规则仅用于进行大小写转换。 (进行大小写转换会导致某些语言出现问题。这不是一个很好的选择。)排序使用语言规则,例如忽略破折号。

MySQL似乎有自己的内置整理表,因此只有两种方法可以完全完成 MySQL的工作:

  • 从MySQL中提取代码并在代码中使用它(非常困难,并且可能存在许可问题。)
  • 将字符串发送到MySQL服务器并让服务器为您订购。

另一种方法是使用Windows内置的排序规则功能更接近MySQL行为。使用CString::Collate()代替CString::CompareNoCase()

如果Windows排序规则功能无法满足您的需求,您还可以使用开源ICU库中内置的排序规则功能。