首页 > 其他分享 >string

string

时间:2023-12-31 14:57:58浏览次数:22  
标签:字符 存储 varchar string NUL pg 字符串

pg有3种字符串类型。

  1. char(n):定长,不足用空格填补。省略n表示char(1)。
  2. varchar(n):变长,省略n表示任意长度,无限制。
    n是字符个数,不是字节个数。the length n must be greater than zero and cannot exceed 10,485,760. 写入表字段的字符串长度超出n数据库会报错。
  3. text:不需要也无法指定长度,表示任意长度的字符串。

使用建议:三者中char(n)的性能最差(虽然在其他数据库反而性能最好,但在pg中就是最差),优先使用text或不指定n的varchar,如果想在数据库层面对长度进行检查和约束时使用varchar(n).(这种约束会带来额外的CPU消耗)

NOTE

  1. 字符串类型(char,varchar或text)的字段,能够存储的字符串最大字节数是1GB;字符集不同,最大字符串长度也不同。
  2. 对于长字符,pg会将它存储到background table,避免它拖慢加载短字段的效率。
  3. 存储到pg的字符串不能有代码是0的字符即nul。(Regardless of the specific character set, the character with code zero (sometimes called NUL) cannot be stored.)

NUL字符(0)是ASCII字符集中的一个特殊字符,它表示字符串的结束。 在C和C++等语言中,字符串通常以NUL字符结尾。 而在PostgreSQL中,NUL字符被视为字符串的终止符,并且不允许在字符串字面值中包含NUL字符。 这是因为在PostgreSQL的存储引擎中,字符串是以C字符串的形式存储的,即以NUL字符结尾。 因此,当我们尝试将包含NUL字符的字符串存储到PostgreSQL中时,就会触发上述的错误。

标签:字符,存储,varchar,string,NUL,pg,字符串
From: https://www.cnblogs.com/LiuwayLi/p/17937499

相关文章

  • 无涯教程-Java 正则 - String replaceAll(String replacement)函数
    java.util.regex.Matcher.replaceAll(Stringreplacement)方法使用给定的替换字符串替换与该模式匹配的每个子序列。StringreplaceAll-声明publicStringreplaceAll(Stringreplacement)replacement  - 替换字符串。StringreplaceAll-返回值通过用替换字符串替......
  • 无涯教程-Java 正则 - Matcher static String quoteReplacement(String s)函数
    java.time.Matcher.quoteReplacement(Strings)方法返回指定字符串的文字替换字符串。staticStringquoteReplacement-声明publicstaticStringquoteReplacement(Strings)s  - 要被字符串化的字符串。staticStringquoteReplacement-返回值文字字符串替换。......
  • 无涯教程-Java 正则 - Matcher String group(String name)函数
    java.time.Matcher.group(Stringname)方法返回在上一次匹配操作期间给定组捕获的输入子序列。Stringgroup(Stringname)-声明以下是java.time.Matcher.group(Stringname)方法的声明。publicStringgroup(intgroup)group - 该匹配器模式中捕获组的索引。String......
  • 无涯教程-Java 正则 - Matcher String group函数
    java.time.Matcher.group()方法尝试查找与模式匹配的输入序列的下一个子序列。Stringgroup()-声明以下是java.time.Matcher.group()方法的声明。publicStringgroup()Stringgroup()-返回值与上一个匹配项匹配的(可能为空)子序列,为字符串形式。IllegalStateExcep......
  • 无涯教程-Java 正则 - Matcher StringBuffer appendTail(StringBuffer sb)函数
    java.time.Matcher.appendTail(StringBuffersb)方法实现了附加和替换操作。StringBufferappendTail-声明以下是java.time.Matcher.appendTail(StringBuffersb)方法的声明。publicMatcherappendTail(StringBuffersb)sb -目标字符串缓冲区。StringBufferappend......
  • 无涯教程-Java 正则 - Matcher appendReplacement(StringBuffer sb, String replacem
    java.time.Matcher.appendReplacement(StringBuffersb,Stringreplacement)方法实现了附加和替换操作。MatcherappendReplacement-声明publicMatcherappendReplacement(StringBuffersb,Stringreplacement)sb           - 目标字符串缓冲区......
  • 无涯教程-Java 正则 - Pattern quote(String s)函数
    java.util.regex.Pattern.quote(Strings)方法返回指定String的文字模式。staticStringquote-声明publicstaticStringquote(Strings)s  - 要被字符串化的字符串。staticStringquote-返回值文字字符串替换。staticStringquote-示例下面的示例显示ja......
  • 无涯教程-Java 正则 - Pattern String[] split(CharSequence input)函数
    java.util.regex.Pattern.split(CharSequenceinput)方法将给定的输入序列拆分为该模式的匹配项。String[]split-声明publicString[]split(CharSequenceinput)input  - 要拆分的字符序列。String[]split-返回值通过在此模式的匹配项附近拆分输入来计算的字符......
  • 无涯教程-Java 正则 - static Pattern compile(String regex)函数
    java.util.regex.Pattern.compile(Stringregex)方法将给定的正则表达式编译为一个模式。staticPatterncompile-声明publicstaticPatterncompile(Stringregex)regex - 要编译的表达式。staticPatterncompile-异常PatternSyntaxException  -如果表达......
  • 无涯教程-Java 正则 - static Pattern compile(String regex, int flags)函数
    java.util.regex.Pattern.compile(Stringregex,intflags)方法将给定的正则表达式编译为一个模式。staticPatterncompile-声明以下是java.util.regex.Pattern.compile(Stringregex,intflags)方法的声明。publicstaticPatterncompile(Stringregex,intflags)reg......