ORACLE截取字符串


每行顯示固定字符串,截取字符串
方法一:在循環裏面輸出
DECLARE
  l_char          VARCHAR2 (3000 ) := 'ORACLEEB電子商務套件SSYSTEMghtest' ;
  l_length        NUMBER ;
  l_line_char     VARCHAR2 (1000 ); --每個字符
  l_lengthb       NUMBER ; --每個字符的字節長度,漢字變成2個
  l_lengthb_total NUMBER := 0 ; --字節長度:漢字算2個
  l_char_display  VARCHAR2 (1000 ); --換行顯示的字符
BEGIN
  l_length := length (l_char);
  dbms_output.put_line( 'l_length:' || l_length);
  FOR i IN 1 .. l_length LOOP
    SELECT substr (l_char, i, 1) INTO l_line_char FROM dual;
    --dbms_output.put_line('l_line_char:'||l_line_char);
    IF lengthb (l_line_char) = 3 THEN
      --漢字
      l_lengthb := 2 ;
    ELSE
      l_lengthb := 1 ;
    END IF ;
    l_lengthb_total := l_lengthb_total + l_lengthb;
    l_char_display  := l_char_display || l_line_char;
    IF l_lengthb_total = 12 THEN
      --l_char_display := l_char_display || CHR(10);
      --12位換行顯示
      dbms_output.put_line( 'l_char_display:' || l_char_display);
      l_lengthb_total := 0 ;
      l_char_display  := NULL ;
    END IF ;
  END LOOP ;
  dbms_output.put_line( 'l_char_display:' || l_char_display);
END ;

輸出:
l_char_display:ORACLEEB電子
l_char_display:商務套件SSYS
l_char_display:TEMghtest

二、使用回車符
DECLARE
  l_char          VARCHAR2 (3000 ) := 'ORACLEEB電子商務套件SSYSTEMghtest' ;
  l_length        NUMBER ;
  l_line_char     VARCHAR2 (1000 ); --每個字符
  l_lengthb       NUMBER ; --每個字符的字節長度,漢字變成2個
  l_lengthb_total NUMBER := 0 ; --字節長度:漢字算2個
  l_char_display  VARCHAR2 (1000 ); --換行顯示的字符
BEGIN
  l_length := length (l_char);
  FOR i IN 1 .. l_length LOOP
    SELECT substr (l_char, i, 1) INTO l_line_char FROM dual;
    --dbms_output.put_line('l_line_char:'||l_line_char);
    IF lengthb (l_line_char) = 3 THEN
      --漢字
      l_lengthb := 2 ;
    ELSE
      l_lengthb := 1 ;
    END IF ;
    l_lengthb_total := l_lengthb_total + l_lengthb;
    l_char_display  := l_char_display || l_line_char;
    IF l_lengthb_total = 12 THEN
      l_char_display := l_char_display || CHR (10 );
      --12位換行顯示
      l_lengthb_total := 0 ;
    END IF ;
  END LOOP ;
  dbms_output.put_line( l_char_display);
END ;

輸出:
ORACLEEB電子
商務套件SSYS
TEMghtest
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章