比较类似MySQL的MFC CString

Compare MFC CString like MySQL compares

本文关键字:MFC CString MySQL 比较      更新时间:2023-10-16

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

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

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

CString::CompareNoCase()使用比较。MySQL使用排序规则。

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

MySQL似乎有自己的内置排序规则表,所以只有两种方法可以做到与MySQL完全一样

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

另一种选择是使用内置在Windows中的排序规则函数来更接近MySQL的行为。使用CString::Collate()而不是CString::CompareNoCase()

如果Windows排序规则函数不能满足您的需求,您也可以使用开源ICU库中内置的排序规则函数。