【发布时间】:2022-01-15 05:50:29
【问题描述】:
PostgreSQL 数据库中的text 数据类型(编码 utf-8)可以包含任何 UTF-8 字符。其中包括一些控制字符 (https://en.wikipedia.org/wiki/Unicode_control_characters)
虽然我同意在某些情况下需要控制字符,但在人名、文档编号等普通属性中很少(甚至没有)使用这些字符。事实上,允许将这些字符存储在 DB 中可以导致令人讨厌的问题,因为字符是不可见的,并且属性的值不是最终用户看起来的值。
由于问题似乎很普遍,有没有办法防止文本字段中的控制字符?也许有一种特殊的文本类型(如citext 用于区分大小写的文本)?还是应该将此行为实现为域?还有其他选择吗?我能找到人们谈论的只是使用正则表达式找到这些字符。
我找不到任何解决问题的一般建议,所以我可能在这里遗漏了一些明显的东西。
【问题讨论】:
标签: postgresql types user-defined-data-types