これは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データベースのページネーションを実現するためのさまざまな方法については、このページをご覧ください。