t恤在线制作网站,wordpress nivoslider,常用ppt模板网站,网站开发文档范文业务场景#xff1a;需求点项目excel数据导入#xff0c;会对重复名称校验拦截#xff0c;如#xff1a;之前已插入名称为-半角括号“#xff08;a#xff09;”,再次插入一条名称为-全角括号项目“(a)”,校验通过#xff0c;但是插入数据库报错。
原因#xff1a;由于…业务场景需求点项目excel数据导入会对重复名称校验拦截如之前已插入名称为-半角括号“a”,再次插入一条名称为-全角括号项目“(a)”,校验通过但是插入数据库报错。
原因由于数据库默认忽略括号全角、半角导致一条数据代码数据校验通过但插入数据唯一键冲突。
如果使用的数据库是‘utf8mb4_unicode_ci’在数据库层面通过SQL进行排序、对比操作时会忽略全角、半角、大小写区分如在代码中进行排序和对比操作需求考虑逻辑的一致性。 MySQL数据库中utf8mb4_unicode_ci字符集的特性
1. utf8mb4_unicode_ci字符集概述
utf8mb4_unicode_ci是MySQL中的一种字符集和排序规则collation。utf8mb4表示能够支持最多4个字节的UTF-8编码这使得它能够存储任何Unicode字符包括表情符号等。_ci后缀表示case-insensitive不区分大小写。
2. 不区分全角/半角和大小写的原因
utf8mb4_unicode_ci字符集在比较字符时不区分全角/半角和大小写主要基于以下原因 Unicode标准utf8mb4_unicode_ci的排序规则基于Unicode标准该标准旨在统一字符表示以便跨语言和地区兼容。在Unicode标准中全角和半角字符可能被认为是等价的变体。 不区分大小写_ci后缀意味着在排序和比较时不区分大小写。这是为了支持那些不区分大小写的语言环境使得数据库能更通用和灵活。 国际化和本地化不区分全角/半角和大小写可以让数据库更好地适应国际化和本地化的需求因为不同的语言和地区可能对字符的处理有不同的要求。
3. 对数据库设计的影响
在设计数据库时需要考虑到这些特性特别是当你的应用程序需要区分全角/半角或大小写时。在这种情况下你可能需要 选择不同的排序规则选择一个区分大小写或全角/半角的排序规则如utf8mb4_bin它是二进制的会区分字符的所有差异。 自定义排序规则如果没有现成的排序规则满足需求可能需要自定义排序规则。 应用层处理在某些情况下可能需要在应用程序层面上进行字符处理以确保全角/半角和大小写的正确处理。
总结
utf8mb4_unicode_ci字符集不区分全角/半角和大小写这是基于Unicode标准和国际化需求设计的。在需要区分这些差异的场景中可能需要选择或自定义不同的排序规则或者在应用层面上进行处理以确保数据的准确性和一致性。