zoukankan      html  css  js  c++  java
  • plsql programming 08 字符串

    一般, char 和 nchar 类型很少使用.

    建议使用 varchar2 和 nvarchar2, 其中( n 开头的是国家字符集, 没有n开头的是数据库字符集 )

    一般也不怎么使用国家字符集

    variable_name VARCHAR2(max_length [char | byte]);  其中 char 说明以字符为单位, byte说明以字节为单位.

    如果忽略了char或 byte( 我们一般都这样做, 定义时直接 varchar2(10) 类似这种), 这时, 要看初始化参数NLS_LENGTH_SEMANTICS 查看默认的到底是使用 char 还是 byte.

    例如:

    declare

    small_string VARCHAR2(4);

    line_of_text VARCHAR2(2000);

    feature_name VARCHAR2(100 BYTE);   -- 100字节

    emp_name VARCHAR2(30 CHAR);  -- 30个字符的字符串 (个人觉得这种好点, 但是我使用DBCA创建的数据库, 默认的居然是 byte)

    使用字符串

    就是使用oracle提供的字符串函数来处理字符串.

    字符串常量: ‘Brighten the corner’

    q’!Arent’t you glad you’re learning pl/sql with o’reilly ?!’可以看到, 只要使用这种, 标记符号里边无论有多少个单引号都没有关系, 另外分隔符!!也可以换成其他的, 例如 [] 等等

    另外: 一般也不用特殊关系国家字符集

    一些字符串函数:

    cancat(string1, string2)

    upper(string1)

    lower(string1)

    Initcap(string1) -- 首字符大写

    LPAD, RPAD

    SUBSTR

    INSTR

    TRIM, LTRIM, RTRIM

    ORACLE 10G 以后引入了对正则表达式的支持.

    REGEXP_LIKE(字符串, 模式串)  -- 注意, 这不是普通的 LIKE, 例如:

    name varchar2(60) := ‘Anna, Matt, Joe, Nathan, Andrew, Jeff, Aaron’;

    com_string := REGEXP_LIKE(name, ‘^([a-z A-z]*,)+([a-z A-Z]*){1}$’)

    如果能匹配, 则返回 true, 否则返回 false

    [a-z A-Z]: 表示 小写字母 空格 大写字母

    [a-z A-Z]* 表示 小写字母 空格 大写字母 重复 0 –n 次

    ([a-z A-Z]*) 圆括号表示定义了一个子表达式

    ([a-z A-Z]*)+ 加号表示前边的子表达式 1-n 个

    ^ $ 表示开头和结尾

    REGEXP_INSTR : 定位一个模式

    REGEXP_INSTR(source_string, patern [, beginning_position [, occurence

    [, return_option

      [, match_modifier [, subexpression]]]]]])

    看来, 这里的正则表达式和别的语言的基本一样

    REGEXP_SUBSTR 函数, 参数基本和 REGEXP_INSTR 一样

    使用空字符串

    varchar2 类型的 ‘’ 空字符串 就等于 null, 而 char 类型的 ‘’ 不等于 null

    字符串比较, 例如: (我们只讨论varchar2类型, char类型支持空白补齐, 而varchar2类型不支持)

    name1 char(10) := ‘hello’;

    name2 varchar2(20) := ‘hello’;

    虽然看起来 name1 和 name2 值相同, 但是因为他们的类型一个是varchar2(10), 一个是 varchar2(20), 而varchar2不支持空白补齐, 所以 name1 <> name2 , name1 不等于 name2(如果是char类型, 就相等)

    但是, 如果同时都是 varchar2 类型的, 倒更好了, 因为都不支持空白补齐, 所以name1 和 name2 是相等的.

    字符串这章有很多函数, 基本跟别的语言差不多用法.

  • 相关阅读:
    工单组件增强
    一些BAPI
    实例程序
    使用BAPI一定要提交和回滚(错误)
    动态内表值导出为TXT文件
    网页常用功能
    Code Complete
    Typescript 解构 、展开
    Typescript变量声明
    TypeScript基础数据类型
  • 原文地址:https://www.cnblogs.com/moveofgod/p/3548218.html
Copyright © 2011-2022 走看看