sql >> データベース >  >> RDS >> Oracle

Oraclesqlの単一行関数

    これはOracleSQLチュートリアルの一部であり、優れた例、OracleSqlの単一行関数の説明があります

    関数は、0個以上の引数を取り、単一の値を返すプログラムです。

    関数は、単一行、複数行の関数にすることができます

    ここでは、SQLの単一行関数について説明します

    OracleSQLの単一行関数とは

    単一行関数は組み込み関数であり、文字、数値、日付、変換、およびユーザー定義関数が含まれます。

    すべての単一行関数はSQLまたはPL/SQLプログラムで使用でき、SELECT、WHERE、およびORDERBY句で使用できます。

    単一行関数には、TO_CHAR、TO_DATE、UPPER、LOWERなどが含まれます

    単一行関数は、およびUPDATEコマンドのSET句でも使用できます。単一行関数はHAVING句では使用できません。

    さまざまな重要な単一行関数を調べてみましょう

    キャラクター機能 SQL

    文字関数は次のとおりです。
    LOWER(‘char’):文字列を小文字に変換

    SQL> select ename from  "EMP";
    
    ENAME
    ----------
    Blake
    Clark
    Scott
    
    SQL> select lower(ename) from  "EMP";
    
    LOWER(ENAM
    ----------
    blake
    clark
    scott
    

    UPPER(‘CHAR’):文字列を大文字に変換

    SQL> select upper(ename) from  "EMP";
    
    UPPER(ENAM
    ----------
    BLAKE
    CLARK
    SCOTT
    
    

    INITCAP(‘Char’):各単語の最初の文字が大文字の文字列を返します

    SQL> select initcap(ename) from  "EMP";
    
    INITCAP(EN
    ----------
    Blake
    Clark
    Scott
    

    CONCAT –関数には2つのパラメーター制限があります。

    SQL> select concat(ename,DEPTNO) from emp;
    
    CONCAT(ENAME,DEPTNO)
    --------------------------------------------------
    Blake10
    Clark10
    Scott20
    
    SQL> select concat(ename,empno,DEPTNO) from emp;
    select concat(ename,empno,DEPTNO) from emp
           *
    ERROR at line 1:
    ORA-00909: invalid number of arguments
    
    

    LENGTH:文字列の長さを返します

    SQL> select ename,length(ename) from emp;
    
    ENAME      LENGTH(ENAME)
    ---------- -------------
    Blake                  5
    Clark                  5
    Scott                  5
    
    
    >

    LENGTHB:文字列の長さをバイト単位で返します

    SQL> select ename,length(ename),lengthb(ename) from emp;
    
    ENAME      LENGTH(ENAME) LENGTHB(ENAME)
    ---------- ------------- --------------
    Blake                  5              5
    Clark                  5              5
    Scott                  5              5
    
    

    INSTR:文字列内の検索された文字列のインデックスを返します

    SQL>  select ename,instr(ename,'A') from emp;
    
    ENAME      INSTR(ENAME,'A')
    ---------- ----------------
    Blake                     0
    Clark                     0
    Scott                     0
    
    SQL>  select ename,instr(ename,'a') from emp;
    
    ENAME      INSTR(ENAME,'A')
    ---------- ----------------
    Blake                     3
    Clark                     3
    Scott                     0
    

    LPAD:n文字の文字列を左にパディングします

    SQL>  select ename,lpad(ename,12) from emp;
    
    ENAME      LPAD(ENAME,12)
    ---------- ------------------------------------
    Blake             Blake
    Clark             Clark
    Scott             Scott
    
    SQL> select ename,lpad(ename,12,'-') from emp;
    
    ENAME      LPAD(ENAME,12,'-')
    ---------- ------------------------------------
    Blake      -------Blake
    Clark      -------Clark
    Scott      -------Scott
    
    

    LTRIM:文字列から先頭の文字を削除します

    SQL> select ltrim(' name') from dual;
    
    LTRI
    ----
    name
    
    SQL> select ltrim(' name   ') from dual;
    
    LTRIM('
    -------
    name
    
    SQL> select  LTRIM('000123', '0') from dual;
    
    LTR
    ---
    123
    
    SQL> select  LTRIM('1000123', '0') from dual;
    
    LTRIM('
    -------
    1000123
    

    置換:部分文字列検索を実行して置換します

    SELECT REPLACE('JACK and JUE','J','BL') "Changes"
         FROM DUAL;
    
    Changes
    --------------
    BLACK and BLUE
    

    SUBSTR –数値で指定された文字列のセクションを返します
    SUBSTRB –バイトのみを含むSUBSTRと同じです
    SOUNDEX –文字列の音声表現を返します
    TRANSLATE –文字検索と置換を実行します
    TRIM –文字列の先頭と末尾の文字

    Examples
    
    select emp_name, concat(emp_name,dept_name), length (ename),INSTR(ename, 'A') from dept;
    
    select lower(emp_name) from employee;
    
    select upper(first_name) from emp;
    

    説明したように、単一行関数は各行で機能します

    関連:Oraclesqlデコード処理

    SQLの数値関数

    数値関数は次のとおりです。
    ROUND:数値を丸める

    SQL>  select round(3.456) from dual;
    
    ROUND(3.456)
    ------------
               3
    
    SQL> select round(3.456,2) from dual;
    
    ROUND(3.456,2)
    --------------
              3.46
    

    TRUNC:数値を切り捨てます
    MOD:モジュラスを返します。つまり、余りです

    SQL> select  mod(4,2) from dual;
    
      MOD(4,2)
    ----------
             0
    
    SQL> select  mod(4,3) from dual;
    
      MOD(4,3)
    ----------
             1
    

    SIGN:正、負、またはゼロを返す
    CEIL –次に大きい数値を返します

    SQL> select  ceil(3.1) from dual;
    
     CEIL(3.1)
    ----------
             4
    
    SQL> select  ceil(3) from dual;
    
       CEIL(3)
    ----------
             3
    

    LOG –対数を返します
    FLOOR –次に小さい数値を返します

    SQL> select  floor(3.1) from dual;
    
    FLOOR(3.1)
    ----------
             3
    
    SQL> select  floor(3) from dual;
    
      FLOOR(3)
    ----------
             3
    
    

    SQRT –数値の平方根を返します

    Examples
    
    SELECT SQRT(25) "Square root" FROM DUAL;
    SELECT order_total, CEIL(order_total) FROM orders WHERE order_id = 58758;
    
    

    Oracle日付関数

    Oracleの日付関数は次のとおりです。
    SYSDATE:現在の日付を返す
    DUAL
    MONTHS_BETWEEN(数値を返す):2つの日付の間の月数を返す
    ADD_MONTHS:月数を追加するdate
    NEXT_DAY:指定された日付の次の曜日を返します
    LAST_DAY:月の最後の日を返します


    DBTIMEZONE –データベースのタイムゾーンを返します
    TRUNC:日付を切り捨てます。
    CURRENT_TIMESTAMP –日付と時刻をTIMESTAMP形式で返します

    Examples
    SQL> select CURRENT_TIMESTAMP from dual;
    
    CURRENT_TIMESTAMP
    ---------------------------------------------------------------------------
    01-SEP-19 04.33.26.493097 PM +00:00
    
    SQL> select sysdate from dual;
    
    SYSDATE
    ---------------
    01-SEP-19
    
    
    

    明示的な型変換関数

    TO_CHAR-数値または日付をVARCHAR2に変換します
    TO_NUMBER:文字を数値に変換します
    TO_DATE:日付に変換します

    Examples
    SQL> select to_char(sysdate ,'DD-MON-YYYY,MI') from dual
      2  ;
    
    TO_CHAR(SYSDATE,'DD-
    --------------------
    01-SEP-2019,34
    
    

    その他の機能

    NVL(expr1、expr2)およびNVL3
    NVL – 2つの引数を取ります:NVL(x1、x2)、x1がNULLの場合はx2を返し、x1がNULLでない場合はx1を返します。 NVL2 – 3つの引数を取ります:NVL2(x1、x2、x3)、x1がNULLの場合はx3を返し、x1がNULLでない場合はx2を返します

    DECODEこの関数はIF-THEN-ELSEまたはCASEステートメントのように機能します。
    COALESCE–リストの最初の非NULL値を返します
    SYS_CONTEXT –システム属性を返します
    UID –数値のユーザーIDを返します現在のセッションの場合

    SQLの単一行関数に関する知識をテストするための小さなクイズ

    質問1 :selectステートメントで単一行関数を使用しています。関数がif-then-elseステートメントに類似していると最もよく分類できる関数はどれですか?

    A)sqrt()
    B)decode()
    C)rowidtochar()
    D)new_time()

    説明:

    decode()関数は、SQLステートメントのif-then-else句のように機能します。 sqrt()は数値の
    平方根を生成するため、sqrt()の選択は正しくありません。 new_time()関数は、その関数の呼び出しで指定された値に基づいて新しい時刻を返すため、選択肢new_time()は正しくありません。

    最後に、rowidtochar()はROWID情報をCHAR情報に変換する関数であるため、rowidtochar()の選択は正しくありません。

    質問2:

    SQLステートメントで単一行関数を使用したい。次のうち、数値関数はどれですか? (4つのうち3つを選択してください。)

    A)sinh()
    B)sqrt()
    C)to_number()
    D)round()
    説明:
    これで唯一の非数値関数listはto_number()関数であり、
    変換操作です。

    質問3 次のSQLステートメントはSQL*Plusセッションから取得されました:
    select decode(EMPNO、74765、'INACTIVE'、'ACTIVE')empno from DEPT
    where substr(ENAME、1,1)> to_number ('V')およびEMPNO> 1000
    EMPNO desc、ENAMEascによる注文;


    前のコードブロックに表示されているselectステートメントの次の行のどれにエラーが含まれていますか?

    A)EMP
    C)およびEMPNO> 02000
    D)からdecode(EMPNO、58385、'INACTIVE'、'ACTIVE')empno
    B)を選択します。ここでsubstr(ENAME、1,1 )> to_number('S')
    E)EMPNO desc、ENAMEascによる注文;

    説明:(D)
    Sなどのアルファベットの文字は、数字に変換できません。このステートメントを実行すると、この行にエラーが発生します。
    このクエリの他の行は、構成されたとおりに正しいです。

    質問4 文字列「HelloWorld」から結果「elloworld」を取得するSELECTステートメントはどれですか?
    A。 SELECT SUBSTR(‘HelloWorld’、1)FROM dual;
    B。 SELECT INITCAP(TRIM(‘HelloWorld’、1,1))FROM dual;
    C。 SELECT LOWER(SUBSTR('HelloWorld'、1、1)FROM dual;
    D. SELECT LOWER(SUBSTR('HelloWorld'、2、1)FROM dual;
    E. SELECT LOWER(TRIM( ' H'FROM' HelloWorld'))FROM dual;
    回答:E

    SQLの単一行関数に関するこの投稿が気に入っていただければ幸いです。フィードバックを提供してください

    関連記事
    oracleの分析関数:Oracle Analytic関数は、oracle句によるオーバーパーティションを使用して行のグループに基づいて集計値を計算します。これらは、Oracleの集計関数とは異なります。
    oracleのランク:RANK、DENSE_RANK、およびROW_NUMBERはoracle分析です。 windowと呼ばれる行のグループ内の行をランク付けするために使用される関数
    OracleのLead関数:OracleのLAG関数とOracleのLead関数、分析クエリでの使用方法、およびOraclesqlでの動作を確認してください
    OracleのTop-Nクエリ:OracleのTop-NクエリとOracleクエリOracleデータベースのページネーションを実現するためのさまざまな方法については、このページをご覧ください。


    1. SQLでカウント順に並べ替える方法は?

    2. int delete(String table、String whereClause、String [] whereArgs)関数のString [] whereArgsの目的は何ですか?

    3. ストアドプロシージャを実行する場合、CommandType.Textを使用するのと比較してCommandType.StoredProcedureを使用する利点は何ですか?

    4. データベーステーブルからのランダムレコード(T-SQL)