Skip to content

UsefulSQL

Net Bako edited this page Jul 14, 2021 · 10 revisions

String

  • SUBSTR(Substring, left, right)
/* if you want using left */
select SUBSTR('mystr', 1, 3) from dual;
-- result : mys

/* if you want using right */
select SUBSTR('mystr', -3) from dual;
-- result : str

/* if you want using substring */
select SUBSTR('mystr', 3, 2) from dual;
-- result : st
  • replace(sourcetext, findstr, replacestr)
select REPLACE('mystr', 's', 'o') from dual;
-- result : myotr
  • Like including _ character
select * from all_tables where table_name like 'TBL\_%';

Math

  • mod
select mod(10, 7) from dual;
-- result : 3

Others

  • Find String from Procedure source
SELECT *
 FROM ALL_SOURCE
 WHERE TEXT LIKE '%EVENTSTRING%'
 ORDER BY TYPE, NAME, LINE;
SQL> select to_char(SYSDATE, 'EEDL', 'NLS_CALENDAR=''JAPANESE IMPERIAL''')
  2  from dual;
 
TO_CHAR(DATE'1900-01-01','EEDL','NLS_CALEN
------------------------------------------
明治33年1月1日 月曜日
  • DateDiff
select dtA - dtB as sDatediff from TableA;
SELECT  TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'YYYYMM')  AS m1
  , TO_CHAR (ADD_MONTHS (SYSDATE, -2), 'YYYYMM')  AS m2
  , TO_CHAR (ADD_MONTHS (SYSDATE, -3), 'YYYYMM')  AS m3
FROM    dual;
  • Create DDL script
-- if use long when ddl script be truncated
set long 100000
select dbms_metadata.get_ddl('TABLE','TableName','Owner') from dual;
select dbms_metadata.get_ddl('Procedure','ProcedureName','Owner') from dual;
  • Find locked SQL
select * from v$lock where block = 1;

Table/View/Procedure/Function structure

  • https://devlights.hatenablog.com/entry/20091005/p1
    • user_tables -> all_tables のようにuserをallに変えたら異なるユーザーが作成したリソースが確認できる。

    • Table size check

      SELECT
          OWNER
          ,SEGMENT_NAME
          ,SEGMENT_TYPE
          ,BYTES
      FROM
          DBA_SEGMENTS
      ;

Ranking

SELECT stu_no,activity,score,
 RANK() OVER (ORDER BY score) score_rank
FROM student
ORDER BY score_rank;
CREATE OR REPLACE FUNCTION STRTOKEN(
	P_STRING VARCHAR2, P_DELIMIT VARCHAR2,
	P_POS POSITIVEN := 1, P_NTH POSITIVEN := 1,
	P_EOD VARCHAR2 := NULL)
RETURN VARCHAR2
IS
	vStartPos	PLS_INTEGER;
	vEndPos		PLS_INTEGER;
BEGIN
	IF (P_POS = 1) THEN
		vStartPos := 1;
	ELSE
		vStartPos := INSTR(P_STRING, P_DELIMIT, 1, P_POS - 1);
		IF (vStartPos = 0) THEN
			RETURN P_EOD;
		END IF;
		vStartPos := vStartPos + 1;
	END IF;
	vEndPos := INSTR(P_STRING, P_DELIMIT, vStartPos, P_NTH);
	IF (vEndPos = 0) THEN
		RETURN SUBSTR(P_STRING, vStartPos);
	END IF;
	RETURN SUBSTR(P_STRING, vStartPos, vEndPos - vStartPos);
END;
/

Functions

Triggers

  • Enable/disable/compile
alter trigger <triggername> disable;
alter trigger <triggername> compile;
alter trigger <triggername> enable;

DB Link

AWR / ASH

Index

for edit

Translate this page?

Data(DBMS, NoSQL)

Development

Tools

Management

OS

Hardware

Business

Hobby

Lifestyle

Giip(RPA Engine)

Clone this wiki locally