我应该在Oracle中使用VARCHAR2或CHAR作为数据类型吗?
有人建议我使用CHAR来处理我需要的这些新表,但我很担心,因为这些新表将用于普及使用VARCHAR2数据类型的现有表.我担心在VARCHAR2字段中放置额外的空格以及比较问题.我知道有一些方法可以通过修剪或转换来比较它们,但我担心它会使我的代码变得杂乱无章.
你有什么看法?
I’m concerned about extra spaces being placed in the VARCHAR2 fields and with comparison issues. I know there are ways to compare them using by trimming or converting them but I’m afraid it will make my code messy and buggy.
实际上恰恰相反.使用CHAR会强制你的字符串固定长度,如果它们太短,可以用空格填充它们.因此,当在使用数据的任何应用程序中将CHAR与常规字符串进行比较时,该应用程序每次都需要添加修剪.换句话说,VARCHAR2是自然导致更清晰代码的选择.
通常,您应始终使用VARCHAR2,除非您有一个非常具体的原因,您需要CHAR列.
如果您担心前面或末尾有额外空格的字符串,那么可以想到一些选项:
>确保插入过程中的任何过程都会对插件进行修剪.>在列上添加一个检查约束,以确保string = trim(string).>添加一个插入前的行级触发器,在插入字符串时对其进行修剪.>确保在查询表时对字符串进行修剪