기본 SQL문. SQL 문자열 함수 또는 MySQL 데이터베이스에서 텍스트를 조작하는 방법에 대해 설명합니다. SQL 언어의 기호 함수

기준 SQL 언어 1992년에 채택되어 오늘날에도 여전히 사용되고 있습니다. 많은 사람들의 표준이 된 것은 바로 그 사람이었습니다 물론 일부 제조업체는 표준에 대한 자체 해석을 사용합니다. 그러나 모든 시스템에는 여전히 주요 구성 요소인 SQL 문이 있습니다.

소개

SQL 문을 사용하여 값, 테이블을 관리하고 추가 분석 및 표시를 위해 수신합니다. 이는 시스템이 데이터로 수행할 작업을 이해하는 데 사용되는 키워드 집합입니다.

SQL 문의 여러 범주가 정의됩니다.

  • 데이터베이스 개체 정의;
  • 가치 조작;
  • 보호 및 관리;
  • 세션 매개변수;
  • 기본 정보;
  • 정적 SQL;
  • 동적 SQL.

데이터 조작을 위한 SQL 문

끼워 넣다. 기존 테이블에 행을 삽입합니다. 이는 특정 조건에 따라 결정되는 하나의 값과 여러 값에 모두 사용될 수 있습니다. 예를 들어:

테이블 이름(컬럼명 1, 컬럼명 2)

값(값 1, 값 2).

여러 값에 대해 INSERT 문을 사용하려면 구문은 다음과 같습니다.

테이블 이름 1(컬럼 이름 1, 컬럼 이름 2)

SELECT 컬럼명 1, 컬럼명 2

FROM 테이블 이름 2

WHERE 테이블 이름 2.열 이름 1>2

이 쿼리는 테이블 2에서 열 1의 2보다 큰 모든 데이터를 선택하여 첫 번째 데이터에 삽입합니다.

업데이트. 이름에서 알 수 있듯이 이 연산자는 SQL 쿼리특정 속성으로 기존 테이블의 데이터를 업데이트합니다.

업데이트 테이블 이름 1

SET 컬럼명 2 = "바질"

WHERE 테이블 이름 1.열 이름 1 = 1

이 구성은 첫 번째 열에서 숫자 1이 나오는 모든 행을 Vasily 값으로 채웁니다.

테이블의 데이터입니다. 조건을 지정하거나 모든 줄을 제거할 수 있습니다.

DELETE FROM 테이블 이름

WHERE 테이블 이름.열 이름 1 = 1

위 쿼리는 첫 번째 열의 값이 1인 모든 데이터를 데이터베이스에서 제거합니다. 전체 테이블을 지우는 방법은 다음과 같습니다.

SELECT 문

SELECT의 주요 목적은 특정 조건에 따라 데이터를 선택하는 것입니다. 그의 작업 결과는 항상 선택된 데이터가 포함된 새 테이블입니다. MS 연산자는 다양한 쿼리에 사용될 수 있습니다. 따라서 이와 함께 다른 관련 키워드를 고려할 수 있습니다.

특정 테이블의 모든 데이터를 선택하려면 "*" 기호를 사용하십시오.

FROM 테이블 이름 1

작업 결과 주어진 요청~ 할 것이다 정확한 사본 1 번 테이블.

그리고 여기에는 표 1의 열 1에서 2보다 큰 모든 값을 가져오는 WHERE 조건에 따른 선택이 있습니다.

FROM 테이블 이름 1

WHERE 테이블 이름 1.열 이름 1 > 2

특정 열만 필요하도록 선택 항목을 지정할 수도 있습니다.

SELECT 테이블 이름 1.컬럼 이름 1

FROM 테이블 이름 1

이 쿼리의 결과는 열 1의 값이 포함된 모든 행이 됩니다. MS SQL 문을 사용하면 이동 중에 특정 값을 대체, 계산 및 대체하여 자신만의 테이블을 만들 수 있습니다.

테이블명 1.컬럼명 1

테이블 이름 1.컬럼 이름 2

테이블명 1.컬럼명 3

테이블명 1.컬럼명 2 * 테이블명 1.컬럼명 3 AS SUMMA

FROM 테이블 이름 1

첫눈에 반해 복잡한 쿼리테이블 1에서 모든 값을 가져온 다음 새 열 EQ 및 SUMMA를 만듭니다. 첫 번째에는 "+" 기호를 입력하고 두 번째에는 열 2와 3의 데이터 곱을 입력합니다. 결과는 작동 방식을 이해하기 위해 표 형식으로 표시될 수 있습니다.

SELECT 문을 사용하면 일부 속성에 따라 데이터를 즉시 정렬할 수 있습니다. 이를 위해 ORDER BY라는 단어가 사용됩니다.

테이블명 1.컬럼명 1

테이블 이름 1.컬럼 이름 2

테이블명 1.컬럼명 3

FROM 테이블 이름 1

ORDER BY 열 이름 2

결과 테이블은 다음과 같습니다.

즉, 모든 행은 2열의 값이 오름차순으로 설정되었습니다.

여러 테이블에서 데이터를 검색할 수도 있습니다. 명확성을 위해 먼저 데이터베이스에 다음과 같은 두 가지가 있다고 상상해야 합니다.

테이블 "직원"

테이블 "급여"

이제 공통 값을 얻으려면 어떻게든 이 두 테이블을 연결해야 합니다. 기본 SQL 문을 사용하면 다음과 같이 할 수 있습니다.

직원.번호

직원.이름

급여.비율

급여. 발생

FROM 직원, 급여

WHERE 직원.번호 = 급여.번호

여기에는 숫자로 통합된 두 개의 서로 다른 값 표가 있습니다. 결과는 다음 데이터 세트입니다.

SELECT에 대해 조금 더 자세히 설명합니다. 집계 함수 사용

주요 연산자 중 하나가 가져오기에 대한 일부 계산을 수행할 수 있습니다. 이를 위해 그는 특정 기능과 공식을 사용합니다.

예를 들어 "Employees" 테이블에서 레코드 수를 얻으려면 다음 쿼리를 사용해야 합니다.

N으로 개수 선택(*)

직원으로부터

결과는 하나의 값과 하나의 열이 있는 테이블입니다.

이 쿼리를 사용하여 어떤 일이 일어나는지 확인할 수 있습니다.

SUM(급여.미수) AS SUMMA

MAX(급여.누적) AS MAX

MIN(급여. 미지급) AS MIN

AVG(급여.누적) AS SRED

급여에서

최종 테이블은 다음과 같습니다.

이런 식으로 다양한 기능의 계산을 즉석에서 수행하여 데이터베이스에서 원하는 값을 선택할 수 있습니다.

결합, 교차 및 차이

SQL에서 여러 쿼리 결합

직원 선택.이름

직원으로부터

WHERE 직원.번호 = 1

직원 선택.이름

FROM 직원, 급여

WHERE 급여.번호 = 1

이러한 조인을 사용하려면 테이블이 호환되어야 한다는 점을 명심해야 합니다. 즉, 동일한 수의 열을 갖습니다.

SELECT 문 구문 및 처리 순서

우선 SELECT는 데이터를 가져올 영역을 정의합니다. 이를 위해 사용됩니다 예어에서. 정확히 무엇을 선택할지 지정되지 않은 경우.

그런 다음 SQL WHERE 절이 있을 수 있습니다. 도움을 받아 SELECT는 테이블의 모든 행을 실행하고 데이터가 조건을 준수하는지 확인합니다.

쿼리에 GROUP BY가 있으면 지정된 매개변수에 따라 값이 그룹화됩니다.

데이터 비교 연산자

여러 유형이 있습니다. 안에 SQL 문비교 확인 가능 다양한 방식가치.

    "=". 짐작할 수 있듯이 두 표현의 동등성을 나타냅니다. 예를 들어 위의 예에서는 이미 WHERE Salary.Number = 1로 사용되었습니다.

    ">". 더 많은 표시. 표현식의 왼쪽 값이 더 크면 논리 TRUE가 반환되고 조건이 충족된 것으로 간주됩니다.

    «<». Знак меньше. Обратный предыдущему оператор.

    표지판 "<=» и «>=". 피연산자가 같으면 조건도 true가 된다는 점에서 단순 more and less 연산자와 다릅니다.

좋다

이 키워드는 "비슷한"으로 번역될 수 있습니다. SQL의 LIKE 연산자는 거의 동일한 방식으로 사용됩니다. 즉, 템플릿에 따라 쿼리를 실행합니다. 즉, 정규식을 사용하여 데이터베이스에서 데이터 선택을 확장할 수 있습니다.

예를 들어, 이미 알려진 베이스 "Employees"에서 이름이 "I"로 끝나는 모든 사람을 가져오는 작업이 설정되었습니다. 그러면 쿼리는 다음과 같이 작성할 수 있습니다.

직원으로부터

WHERE 이름은 `%i`와 같습니다.

이 경우 백분율 기호는 마스크, 즉 문자와 숫자를 의미합니다. 그리고 문자 "i"를 기준으로 SQL은 마지막 문자가 바로 그 문자여야 한다고 결정합니다.

사례

이 SQL Server 문은 다중 선택을 구현한 것입니다. 이는 많은 프로그래밍 언어의 스위치 구성과 유사합니다. SQL의 CASE 문은 여러 조건에 대해 작업을 수행합니다.

예를 들어 급여 테이블에서 최대값과 최소값을 선택해야 합니다.

그러면 쿼리는 다음과 같이 작성할 수 있습니다.

급여에서

MAX(누적)를 선택한 다음 최대를 선택하는 경우

MIN(누적)을 선택한 다음 최소

이러한 맥락에서 시스템은 발생 열에서 최대값과 최소값을 찾습니다. 그런 다음 END를 사용하면 조건 결과에 따라 "최대" 또는 "최소"가 입력되는 "전체" 필드가 생성됩니다.

그런데 SQL에는 CASE - COALESCE라는 보다 간결한 형태도 있습니다.

데이터 정의 연산자

이 보기를 사용하면 테이블에 대한 다양한 변경(인덱스 생성, 삭제, 수정 및 작업)을 수행할 수 있습니다.

고려해야 할 첫 번째 것은 CREATE TABLE입니다. 테이블을 생성하는 것 외에는 아무 것도 수행하지 않습니다. CREATE TABLE 쿼리만 입력해도 몇 가지 매개변수를 지정해야 하므로 아무 일도 일어나지 않습니다.

예를 들어 이미 익숙한 Employees 테이블을 생성하려면 다음 명령을 사용해야 합니다.

테이블 만들기 직원

(숫자(10)은 NULL이 아닙니다.

이름 varchar(50) NOT NULL

성 varchar(50) NOT NULL)

이 쿼리에서는 필드 이름과 해당 유형이 괄호 안에 즉시 결정되며 NULL과 같을 수 있는지 여부도 결정됩니다.

드롭 테이블

하나의 간단한 작업을 수행하여 지정된 테이블을 삭제합니다. 추가 IF EXISTS 매개변수가 있습니다. 조회 중인 테이블이 존재하지 않는 경우 삭제 시 오류를 흡수합니다. 사용 예:

존재하는 경우 DROP TABLE 직원.

인덱스 생성

SQL에는 데이터 액세스 속도를 높일 수 있는 인덱스 시스템이 있습니다. 일반적으로 특정 열을 가리키는 링크입니다. 간단한 쿼리로 인덱스를 생성할 수 있습니다:

인덱스 생성 index_name

ON 테이블_이름(컬럼_이름)

이 연산자는 T-SQL, Oracle, PL SQL 및 기타 여러 해석 기술에 사용됩니다.

테이블 변경

다양한 옵션을 갖춘 매우 기능적인 연산자입니다. 일반적으로 테이블의 구조, 정의 및 배치를 변경합니다. 이 연산자는 Oracle SQL, Postgres 및 기타 여러 곳에서 사용됩니다.

    추가하다. 테이블에 열을 추가합니다. 구문은 다음과 같습니다. ALTER TABLE 테이블_이름 ADD 열_이름 저장된_데이터_유형. 생성 중인 열이 이미 존재하는 경우 오류를 억제하기 위해 IF NOT EXISTS 옵션을 가질 수 있습니다.

    떨어지다. 열을 삭제합니다. 또한 IF EXISTS 키가 있는데, 이 키가 없으면 필수 열이 누락되었다는 오류가 생성됩니다.

    변화. 필드 이름을 지정된 이름으로 바꾸는 역할을 합니다. 사용 예: ALTER TABLE 테이블_이름 CHANGE old_name new_name;

    수정하다. 이 명령은 특정 열의 유형 및 추가 속성을 변경하는 데 도움이 됩니다. 그리고 다음과 같이 사용됩니다. ALTER TABLE table_name MODIFY 컬럼_이름 data_type 속성;

보기 만들기

SQL에는 뷰라는 것이 있습니다. 한마디로 데이터가 담긴 일종의 가상 테이블이다. 이는 SQL SELECT 문을 사용한 선택의 결과로 구성됩니다. 뷰는 데이터베이스에 대한 액세스를 제한하고, 숨기고, 실제 열 이름을 바꿀 수 있습니다.

생성 프로세스는 간단한 요청으로 수행됩니다.

CREATE VIEW 뷰 이름 AS SELECT FROM * 테이블 이름

샘플링은 특정 조건에 따라 전체 데이터베이스 전체에서 발생할 수 있습니다.

기능에 대해 조금

SQL 쿼리는 데이터와 상호 작용하고 즉시 변환할 수 있는 다양한 내장 함수를 사용하는 경우가 많습니다. 이는 구조화된 언어의 필수적인 부분이므로 고려해 볼 가치가 있습니다.

    세다. 특정 테이블의 레코드나 행 수를 계산합니다. 매개변수로 열 이름을 지정할 수 있으며, 그러면 해당 열에서 데이터를 가져옵니다. COUNT SELECT * 직원으로부터;

    A.V.G. 숫자 데이터가 있는 열에만 적용됩니다. 그 결과는 모든 값의 산술 평균을 결정하는 것입니다.

    최소 및 최대. 이러한 기능은 이 기사에서 이미 사용되었습니다. 지정된 열에서 최대값과 최소값을 결정합니다.

    합집합. 간단합니다. 이 함수는 열 값의 합계를 계산합니다. 숫자 데이터 유형에만 사용됩니다. 쿼리에 DISTINCT 매개변수를 추가하면 고유한 값만 합산됩니다.

    둥근. 소수점 이하 자릿수를 반올림하는 기능입니다. 구문에서는 열 이름과 소수 자릿수를 사용합니다.

    렌. 열 값의 길이를 계산하는 간단한 함수입니다. 결과는 문자 수를 나타내는 새 테이블이 됩니다.

    지금. 이 키워드는 현재 날짜와 시간을 계산하는 데 사용됩니다.

추가 연산자

많은 SQL 문 예제에는 작은 작업을 수행하지만 선택이나 데이터베이스 작업을 크게 단순화하는 키워드가 있습니다.

    처럼. 결과 테이블에 지정된 이름을 부여하여 결과를 시각화해야 할 때 사용됩니다.

    사이. 매우 편리한 선택 도구입니다. 데이터를 가져올 값의 범위를 지정합니다. 입력은 범위가 사용되는 숫자부터 매개변수까지 허용합니다.

    아니다. 연산자는 표현식의 반대를 제공합니다.

    잘라냅니다. 데이터베이스의 지정된 영역에서 데이터를 제거합니다. 사용 후 데이터 복구가 불가능하다는 점에서 유사 사업자와 다릅니다. SQL의 다양한 해석에서 이 키워드의 구현이 다를 수 있다는 점을 고려해 볼 가치가 있습니다. 따라서 TRUNCATE를 사용하기 전에 도움말 정보를 읽어 보는 것이 좋습니다.

    한계. 표시할 줄 수를 설정합니다. 연산자의 특징은 항상 끝에 위치한다는 것입니다. 하나의 필수 매개변수와 하나의 선택 매개변수가 필요합니다. 첫 번째 항목은 표시할 선택한 데이터가 포함된 행 수를 지정합니다. 그리고 두 번째 것을 사용하면 연산자는 값 범위에 대해 작동합니다.

    노동 조합. 여러 쿼리를 결합하는 데 매우 편리한 연산자입니다. 그는 이미 이 기사에서 이에 대한 예를 만났습니다. 여러 테이블에서 원하는 행을 UNION으로 조인하여 표시할 수 있어 더욱 편리하게 사용할 수 있습니다. 구문은 다음과 같습니다. SELECT 컬럼_이름 FROM 테이블_이름 UNION SELECT other_column_name FROM other_table_name. 결과는 쿼리가 결합된 피벗 테이블입니다.

    기본 키. "기본 키"로 번역됩니다. 실제로 참고 자료에서 사용되는 용어는 바로 이 용어입니다. 고유한 행 식별자를 나타냅니다. 이는 일반적으로 테이블을 포함할 필드를 지정하기 위해 테이블을 생성할 때 사용됩니다.

    기본. 이전 연산자와 마찬가지로 생성 쿼리를 실행하는 과정에서 사용됩니다. 필드가 생성될 때 필드에 채워질 기본값을 정의합니다.

    없는. 프로그래머뿐만 아니라 초보자도 쿼리를 컴파일할 때 NULL 값을 얻을 수 있는 가능성을 종종 잊어버립니다. 결과적으로 오류가 코드에 나타나 디버깅 중에 추적하기 어렵습니다. 따라서 테이블을 생성하거나 값을 선택하거나 다시 계산할 때 쿼리의 이 섹션에서 NULL이 발생하는지 여부를 잠시 멈추고 생각해야 합니다.

    메모리. 이 문서에서는 특정 작업을 수행할 수 있는 여러 기능을 보여주었습니다. 데이터베이스 작업을 위한 셸을 개발할 때 데이터베이스 관리 시스템의 단순 표현식 계산보다 "중요"할 수 있습니다. 어떤 경우에는 이로 인해 성능이 크게 향상됩니다.

    제한. 수천 개의 행이 있는 데이터베이스에서 두 개만 가져와야 하는 경우 LIMIT 또는 TOP와 같은 연산자를 사용해야 합니다. 쉘 개발 언어를 사용하여 데이터를 추출할 필요가 없습니다.

    화합물. 여러 테이블에서 데이터를 받은 후 많은 프로그래머는 쉘 메모리를 사용하여 테이블을 하나로 모으기 시작합니다. 그런데 왜? 결국, 이 모든 것이 포함된 하나의 요청을 할 수 있습니다. 추가 코드를 작성하거나 시스템에 추가 메모리를 예약할 필요가 없습니다.

    정렬. 쿼리에 순서를 적용하는 것이 가능하다면, 즉 DBMS에 따라 이를 사용해야 합니다. 이렇게 하면 프로그램이나 서비스를 실행할 때 리소스가 크게 절약됩니다.

    요청이 많습니다. 많은 레코드를 순차적으로 삽입해야 하는 경우 최적화를 위해 하나의 쿼리에 데이터를 일괄 삽입하는 방법을 고려해야 합니다. 이는 또한 전체 시스템의 성능을 향상시킵니다.

    신중한 데이터 배치. 데이터베이스의 구조를 컴파일하기 전에, 그렇게 많은 테이블과 필드가 필요한지 생각해 볼 필요가 있습니다. 어쩌면 그것들을 병합하거나 일부를 버리는 방법이 있을 수도 있습니다. 프로그래머는 어디에서도 절대 사용되지 않을 과도한 양의 데이터를 사용하는 경우가 많습니다.

    유형. 공간과 리소스를 절약하려면 사용하는 데이터 유형에 민감해야 합니다. 메모리에 대해 덜 "무거운" 유형을 사용하는 것이 가능하다면 이를 사용해야 합니다. 예를 들어 특정 필드에서 숫자 값이 255를 초과하지 않는 것으로 알려진 경우 1바이트의 TINYINT가 있으면 4바이트 INT를 사용하는 이유는 무엇입니까?

결론

결론적으로, SQL 구조 쿼리 언어는 이제 사이트, 웹 서비스, PC 프로그램, 모바일 장치용 애플리케이션 등 거의 모든 곳에서 사용된다는 점에 유의해야 합니다. 따라서 SQL에 대한 지식은 모든 개발 분야에 도움이 될 것입니다.

동시에 원래 언어 표준의 수정 사항이 서로 다른 경우도 있습니다. 예를 들어, PL SQL 문은 SQL Server와 다른 구문을 가질 수 있습니다. 따라서 이 기술로 개발을 시작하기 전에 해당 매뉴얼을 읽어야 합니다.

앞으로는 기능이나 성능 측면에서 SQL을 능가할 수 있는 아날로그가 나타날 가능성이 낮기 때문에 이 분야는 모든 프로그래머에게 상당히 유망한 틈새 시장입니다.

문자열을 역순으로(끝부터 시작) 선택하려면 REVERSE 기능을 사용합니다. 함수의 형식은 다음과 같습니다. REVERSE(<строковое выражение>).

예를 들어 이니셜이 E.B.인 구독자에 대한 정보를 표시하려면 다음 쿼리를 사용할 수 있습니다.

선택 * 구독자로부터

REVERSE(Fio)가 REVERSE(EV)로 시작하는 곳;.

쿼리 실행 결과는 그림 1과 같다. 3.20.

미쉬첸코 E.V.

E. V. STARODUBTSEV

쌀. 3.20. REVERSE 함수의 결과

시작(LEFT의 경우) 또는 끝이 할당됩니다.

LEFT 및 RIGHT 함수는 각각 특정 문자열의 시작 또는 끝에서 원하는 문자 수를 추출하는 데 사용되며 다음 형식을 갖습니다.

왼쪽 (<строковое выражение>, 길이),

오른쪽 (<строковое выражение>, 길이), 여기서<строковое выражение>- 표현, 기호로부터;

길이 - (RIGHT의 경우) 문자열에 할당된 문자 수입니다.

예를 들어 REVERSE 함수를 사용하여 구현된 이전 쿼리는 다음과 같이 RIGHT 함수를 사용하여 구현할 수 있습니다.

SELECT * FROM 구독자 WHERE RIGHT(Fio, 4) = E.V.;.

쿼리 실행 결과는 그림 3에 표시된 결과와 일치합니다. 3.20.

예를 들어 코드 3과 개인 계좌 번호의 처음 4자리를 사용하여 거리에 거주하는 Fio 가입자를 표시하려면 다음 쿼리를 사용할 수 있습니다.

FIO, LEFT(AccountCD, 4) FROM 가입자 ​​WHERE StreetCD = 3;을 선택하세요. 쿼리 실행 결과는 그림 1과 같다. 3.21.

악세노프 S.A.

미쉬첸코 E.V.

V. S. 코뉴코프

쌀. 3.21. RIGHT 함수의 결과

원래 문자열의 일부를 다른 문자 순서로 바꾸는 함수가 많이 있습니다.

OVERLAY 함수는 위치에서 시작하고 length 길이를 갖는 소스 문자열의 하위 문자열을 대체 문자열의 값으로 바꿉니다. 함수의 형식은 다음과 같습니다.

오버레이(<исходная строка>자본 매출<строка для замены>

FROM 위치 [ 길이에 대해 ]), 여기서<исходная строка>그리고<строка для замены>문자열 표현식일 수 있습니다.

길이가 지정되지 않은 경우 기본값은 대체 문자열(CHAR LENGTH(<строка для замены>)).

OVERLAY 함수는 SUBSTRING 함수를 사용하는 다음 표현식과 동일합니다.

하위 문자열(<исходная строка>1 FOR (위치 - 1))

<строка для замены>

하위 문자열(<исходная строка>FROM(위치 + 길이)).

REPLACE 함수는 모든 항목을 대체합니다.<подстроки>V<строковое выражение>지정된<строку для замены>. 다음과 같은 형식을 갖습니다.

바꾸다(<строковое выражение>, <подстрока>, <строка для замены>). 예를 들어 결함 이름에서 "stove"라는 단어를 "gas 스토브"라는 문구로 바꾸려면 다음 쿼리를 실행할 수 있습니다. SELECT REPLACE (FailureNM, 스토브, 가스 스토브)

디스페어에서;.

쿼리 실행 결과는 그림 1과 같다. 3.22.

막힌 온수기

AGV는 타지 않습니다

온수기에서 물이 새네요

용광로 버너 결함

가스 계량기 결함

가스레인지 버너로의 가스 흐름 불량

가스렌지 크레인의 마개가 빡빡하게 돌아가네요

수도꼭지를 닫아도 가스렌지의 불이 꺼지지 않습니다.

쌀. 3.22. REPLACE 함수의 결과

TRIM 함수도 스칼라 함수에 속합니다.

문자를 제거하여 인수 문자열을 반환합니다(기본값

줄의 시작 및/또는 끝.

함수를 호출하는 데 다음 구문이 사용됩니다. TRIM ([ [<удаляемая подстрока>] 에서 ]<строковое выражение>).

이 기능은 공백입니다) from

LEADING은 지정된 하위 문자열을 문자열의 시작 부분에서 제거해야 함을 나타내고, TRAILING은 문자열의 끝에서, BOTH는 문자열의 시작과 끝에서 제거해야 함을 나타냅니다. 기능을 사용할 때 다음 사항에 유의하세요.

1) LEADING, TRAILING 또는 BOTH가 지정되지 않은 경우 기본적으로 BOTH가 가정됩니다.

2) 만일<удаляемая подстрока>정의되지 않은 경우 기본값은 빈 문자열입니다.

3) LEADING, TRAILING 또는 BOTH 및/또는<удаляемая подстрока>지정한 다음 FROM 단어 뒤에 지정해야 합니다.<строковое выражение>문자가 제거되는 입니다.

4) FROM이라는 단어를 독립적으로 사용할 수 없는 경우 문자가 제거되는 문자열을 지정합니다(LEADING, TRAILING, BOTH 및<удаляемая подстрока>명시되지 않은).

예를 들어, STREET라는 단어 없이 거리 이름을 지정하여 Street 테이블의 데이터를 표시하려면 다음 쿼리를 사용할 수 있습니다. SELECT StreetCD,

TRIM(StreetNM의 두 거리) AS Str 이름

쿼리 실행 결과는 그림 1과 같다. 3.23.

보이코프 레인

쿠투조프

모스크바

모스크바 고속도로

타타르어

가가리나

치올코프스키

쌀. 3.23. TRIM 함수의 결과

제거할 부분 문자열을 지정할 때 대소문자를 구분하십시오(소문자 또는 대문자). 이전 예에서 STREET 대신 street을 입력하면 Street 테이블의 모든 거리 이름이 대문자로 작성되므로 쿼리는 잘못된 결과를 반환합니다.

인수 문자열의 왼쪽(LPAD) 또는 오른쪽(RPAD)을 지정된 문자 시퀀스로 채우는 LPAD 및 RPAD 함수가 있습니다(<строка заполнитель>)를 주어진 크기(길이)로 변환합니다. 만약에<строка заполнитель>지정하지 않으면 공백이 패딩에 사용됩니다. 결과 문자열이 지정된 길이에 도달하면 자리 표시자 문자열이 잘립니다. 함수의 형식은 다음과 같습니다.

LPAD(<строковое выражение>, 길이 [,<строка заполнитель>]), RPAD(<строковое выражение>, 길이 [,<строка заполнитель> ]).

... [ 25 ] ...

이 기능 그룹을 사용하면 텍스트를 조작할 수 있습니다. 많은 문자열 함수가 있으며 가장 일반적인 함수를 고려해 보겠습니다.

  • CONCAT(str1,str2...) 인수를 연결하여 생성된 문자열을 반환합니다(인수는 대괄호 - str1,str2...에 지정됨). 예를 들어 Vendors 테이블에는 City 열과 Address 열이 있습니다. 결과 테이블에서 Address와 City가 같은 열에 있기를 원한다고 가정해 보겠습니다. 두 열의 데이터를 하나로 결합하려고 합니다. 이를 위해 CONCAT() 문자열 함수를 사용하고 인수로 결합된 열(도시 및 주소)의 이름을 지정합니다.

    SELECT CONCAT(도시, 주소) FROM 공급업체;

    분할 없이 병합이 이루어졌기 때문에 읽기가 쉽지 않습니다. 조인되는 열 사이에 공백이 있도록 쿼리를 조정해 보겠습니다.

    SELECT CONCAT(도시, " ", 주소) FROM 공급업체;


    보시다시피 공백도 인수로 간주되며 쉼표로 구분되어 지정됩니다. 결합할 열이 더 많다면 매번 공백을 지정하는 것은 비합리적입니다. 이 경우 문자열 함수를 사용할 수 있습니다. CONCAT_WS(구분자, str1,str2...), 연결할 문자열 사이에 구분 기호를 배치합니다(구분 기호는 첫 번째 인수로 지정됩니다). 그러면 우리의 요청은 다음과 같습니다:

    SELECT CONCAT_WS(" ", 도시, 주소) FROM 공급업체;

    결과는 외부적으로는 변하지 않았지만, 3~4개의 컬럼을 합치면 코드가 대폭 줄어들게 됩니다.


  • INSERT(str, pos, len, new_str) pos 위치에서 시작하고 길이가 len 문자인 하위 문자열이 하위 문자열 new_str로 대체된 문자열 str을 반환합니다. Address(address) 열에서 처음 3자(약어 거리 등)를 표시하지 않기로 결정한 다음 이를 공백으로 대체한다고 가정합니다.

    SELECT INSERT(주소, 1, 3, " ") FROM 공급업체;


    즉, 처음부터 세 개의 문자가 세 개의 공백으로 대체됩니다.


  • LPAD(str, len, dop_str) 왼쪽에 dop_str이 추가된 문자열 str을 길이 len으로 반환합니다. 공급업체 도시를 오른쪽에 표시하고 빈 공간을 점으로 채우고 싶다고 가정해 보겠습니다.

    SELECT LPAD(city, 15, ".") FROM 공급업체;



  • RPAD(str, len, dop_str) dop_str로 오른쪽 패딩된 문자열 str을 길이 len으로 반환합니다. 공급자 도시가 왼쪽에 표시되고 빈 공간이 점으로 채워지기를 원한다고 가정해 보겠습니다.

    SELECT RPAD(city, 15, ".") FROM 공급업체;


    len 값은 인쇄할 문자 수를 제한합니다. 도시 이름이 15자를 초과하면 잘립니다.


  • LTRIM(str) 모든 선행 공백이 제거된 문자열 str을 반환합니다. 이 문자열 함수는 데이터 입력 중에 임의의 공백이 허용되는 경우 정보를 올바르게 표시하는 데 유용합니다.

    공급업체에서 LTRIM(도시)을 선택하세요.


  • RTRIM(str) 모든 후행 공백이 제거된 문자열 str을 반환합니다.

    공급업체에서 RTRIM(도시)을 선택하세요.

    우리의 경우에는 추가 공백이 없었기 때문에 결과를 겉으로 볼 수는 없습니다.


  • TRIM(str) 모든 선행 및 후행 공백이 제거된 문자열 str을 반환합니다.

    공급업체에서 TRIM(도시)을 선택하세요.


  • LOWER(str) 모든 문자가 소문자로 변환된 문자열 str을 반환합니다. 러시아어 문자에서는 제대로 작동하지 않으므로 사용하지 않는 것이 좋습니다. 예를 들어, 도시 열에 이 함수를 적용해 보겠습니다.

    공급업체에서 도시 선택, 하위(도시);


    아브라카다브라의 결과를 확인해 보세요. 그러나 라틴어에서는 모든 것이 정돈되어 있습니다.

    SELECT LOWER("도시");



  • UPPER(str) 모든 문자가 대문자로 변환된 문자열 str을 반환합니다. 러시아어 문자를 사용하지 않는 것이 좋습니다. 그러나 라틴어에서는 모든 것이 정돈되어 있습니다.

    고객으로부터 UPPER(이메일)을 선택하세요.



  • LENGTH(str) 문자열 str의 길이를 반환합니다. 예를 들어 공급업체 주소에 몇 개의 문자가 있는지 알아 보겠습니다.

    SELECT 주소, LENGTH(주소) FROM 공급업체;



  • LEFT(str, len) str의 왼쪽 문자 중 len을 반환합니다. 예를 들어 공급업체 도시에는 처음 세 문자만 표시되도록 합니다.

    SELECT 이름, LEFT(도시, 3) FROM 공급업체;



  • RIGHT(str, len) str의 오른쪽 문자 중 len을 반환합니다. 예를 들어 공급업체 도시에는 마지막 세 문자만 표시되도록 합니다.

    SELECT 이름, RIGHT(도시, 3) FROM 공급업체;



  • REPEAT(str, n) 문자열 str을 n번 반환합니다. 예를 들어: .

이미 언급했듯이 더 많은 문자열 함수가 있지만 여기에서 고려한 것 중 일부는 극히 드물게 사용됩니다. 따라서 이에 대한 고려는 종료되고 보다 일반적으로 사용되는 날짜 및 시간 기능으로 넘어갑니다.

안녕하세요, 블로그 사이트 독자 여러분. 오늘은 SQL 언어, 특히 텍스트 처리 기능에 대해 이야기하고 싶습니다. 사이트를 만들고 관리하기 위해 SQL 언어를 알 필요가 없는 경우가 많습니다. 콘텐츠 관리 시스템을 사용하면 쿼리를 작성하지 않고도 사이트 콘텐츠를 편집할 수 있습니다. 그러나 최소한 구조화된 쿼리 언어에 대해 피상적으로만 알고 있으면 사이트 데이터베이스의 데이터 수정 및 관리 속도를 크게 높이는 데 도움이 됩니다.

나는 종종 데이터베이스의 텍스트 필드에서 텍스트의 일부를 제거하거나, 문자열 데이터를 연결하거나, 텍스트와 관련된 다른 모든 작업에 직면합니다. 사이트의 관리 패널을 통해 이 모든 작업을 수행하는 것은 매우 불편하고 지루합니다. 몇 초 안에 이러한 모든 작업을 수행하는 데이터베이스 쿼리를 작성하는 것이 훨씬 쉽습니다.

그럼, 시작해 볼까요...

SQL 언어의 기호 함수

가장 간단한 것부터 순서대로 시작해 보겠습니다. 먼저 텍스트 문자의 ASCII 코드를 결정하는 데 사용되는 ASCII 문자열 함수를 고려하십시오.

정수 아스키(str )

이 함수는 문자열 str의 첫 번째 왼쪽 문자에 대한 ASCII 코드인 정수 값을 반환합니다. str이 비어 있으면 0을 반환하고 str이 없으면 NULL을 반환합니다.

SELECT ASCII("t");
결과: 116
SELECT ASCII("테스트");
결과: 116
선택 ASCII(1);
결과: 49

정수 ORD(str )

문자열 str의 첫 번째 왼쪽 문자가 멀티바이트이면 해당 코드를 ((첫 번째 바이트 ASCII 코드)*256+(두 번째 바이트 ASCII 코드))[*256+세 번째 바이트 ASCII 코드...] 형식으로 반환합니다. 문자열 str의 첫 번째 왼쪽 문자가 멀티바이트가 아닌 경우 이는 ASCII 함수처럼 작동합니다. 즉, ASCII 코드를 반환합니다.

SELECT ORD("테스트");
결과: 116

CHAR 함수는 ASCII 함수와 밀접하게 관련되어 있으며 그 반대 작업을 수행합니다.

(정수 정수, ...)

CHAR 함수는 ASCII 코드가 지정된 문자열을 반환합니다. 값 중 NULL 값이 있으면 건너뜁니다.

SELECT CHAR(116, "101", 115, "116");
결과: "테스트"

문자열 연결을 위한 SQL 함수

가장 인기 있는 기능 카테고리 중 하나입니다. 결국 사이트 데이터베이스 테이블의 여러 필드 값을 결합해야 하는 경우가 종종 있습니다. SQL 언어에는 다음과 같은 여러 가지 기능이 있습니다. 문자열 연결.

CONCAT 기능:

CONCAT(str1 , str2 ,...)

이 함수는 인수를 연결하여 생성된 문자열을 반환합니다. 세 개 이상의 인수를 지정할 수 있습니다. 인수 중 하나가 NULL이면 반환된 결과는 NULL이 됩니다. 숫자 값은 문자열로 변환됩니다.

SELECT CONCAT("안녕하세요", " ", "세계", "!");
결과: "안녕하세요!"
SELECT CONCAT("안녕하세요", NULL, "세계", "!");
결과: NULL
SELECT CONCAT("pi", "=", 3.14);
결과: "Pi=3.14"

예제에서 볼 수 있듯이 문자열은 구분 기호 없이 연결됩니다. 첫 번째 예에서 단어를 구분하려면 공백을 인수로 사용해야 합니다. 단어가 더 많으면 매번 공백을 삽입하는 것이 그리 편리하지 않습니다.

이러한 경우에는 CONCAT_WS 함수가 있습니다.

CONCAT_WS(분리 기호 , str1 , str2 ,...)

이 함수는 CONCAT 함수와 같이 문자열을 연결하지만 인수 사이에 구분 기호를 삽입합니다. 구분 기호 인수가 NULL이면 결과는 NULL이 됩니다. NULL인 문자열 인수는 건너뜁니다.

SELECT CONCAT_WS (" ", "이바노프", "이반", "이바노비치");
결과: "이바노프 이바노비치"
SELECT CONCAT_WS(NULL, "이바노프", "이반", "이바노비치");
결과: NULL
SELECT CONCAT_WS (" ", "이바노프", NULL, "이반", "이바노비치");
결과: "이바노프 이바노비치"

구분 기호로 구분해야 하는 많은 수의 문자열을 연결하는 경우 CONCAT_WS 함수가 CONCAT 함수보다 훨씬 편리합니다.

때로는 문자를 반복하여 문자열을 특정 문자 수까지 늘려야 하는 경우가 있습니다. 이것도 일종의 문자열 연결입니다. 이를 위해 다음 기능을 사용할 수 있습니다. LPAD그리고 RPAD. 함수의 구문은 다음과 같습니다.

LPAD(str ,렌 정수, 패드스트 )
RPAD(str ,렌 정수, 패드스트 )

LPAD 함수는 문자열 padstr로 왼쪽을 채워 길이 len인 문자열 str을 반환합니다. RPAD 기능도 동일하게 수행되며 오른쪽에서만 연장이 발생합니다.

SELECT LPAD("테스트", 10, ".");
결과: ...... 테스트
SELECT RPAD("테스트", 10, ".");
결과: 테스트......

이러한 기능에 있어서 주의할 점은 len 매개변수, 표시되는 문자 수를 제한합니다. 따라서 str 문자열의 길이가 len 매개변수보다 길면 문자열이 잘립니다.

SELECT LPAD("테스트", 3, ".");
결과: 테스

SQL 쿼리에서 문자열 길이 확인

SQL에서 문자열의 문자 수를 결정하려면 LENGTH 함수가 문자열의 길이를 담당합니다.

정수 길이(str 끈)

이 함수는 문자열 str의 문자 수와 동일한 정수를 반환합니다.

길이 선택("테스트");
결과: 4

멀티바이트 인코딩을 사용하는 경우 LENGTH 함수는 잘못된 결과를 제공합니다. 예를 들어 유니코드 인코딩이 지정된 경우 요청은 다음과 같습니다.

길이 선택("테스트");

8을 반환합니다. 쉽게 알 수 있듯이 이는 실제 문자 수의 두 배입니다. 이 경우 CHAR_LENGTH 함수를 사용해야 합니다.

정수 CHAR_LENGTH(str )

이 함수는 또한 반환합니다. 문자열 길이 str 및 지원 멀티바이트 문자.

예를 들어:

SELECT CHAR_LENGTH("테스트");
결과: 4

SQL을 사용하여 문자열에서 하위 문자열 찾기

문자열에서 부분 문자열의 위치를 ​​계산하기 위해 SQL 언어에는 여러 가지 함수가 있습니다. 가장 먼저 살펴볼 것은 POSITION 함수입니다.

정수위치(하위 문자열 IN str )

문자열 str에서 하위 문자열 substr이 처음 나타나는 위치 번호를 반환하고 하위 문자열을 찾을 수 없으면 0을 반환합니다. POSITION 함수는 멀티바이트 문자로 작동할 수 있습니다.

SELECT POSITION("cd" IN "abcdcde");
결과: 3
SELECT POSITION("xy" IN "abcdcde");
결과: 0

다음 LOCATE 함수를 사용하면 특정 위치에서 하위 문자열 검색을 시작할 수 있습니다.

정수 위치하고 있다(하위 문자열 끈, str ,포스 정수)

문자열 str에서 위치 pos에서 시작하여 부분 문자열 substr이 처음 나타나는 위치를 반환합니다. pos 매개변수를 지정하지 않으면 문자열의 처음부터 검색이 수행됩니다. 하위 문자열 substr을 찾을 수 없으면 0을 반환합니다. 멀티바이트 문자를 지원합니다.

SELECT LOCATE("cd", "abcdcdde", 5);
결과: 5
SELECT LOCATE("cd", "abcdcdde");
결과: 3

POSITION 및 LOCATE 함수와 유사한 INSTR 함수는 다음과 같습니다.

정수 INSTR(str , 하위 문자열 )

위의 함수와 마찬가지로 문자열 str에서 하위 문자열 substr이 처음 나타나는 위치를 반환합니다. POSITION 및 LOCATE 함수와의 유일한 차이점은 인수가 교체된다는 것입니다.

먼저 LEFT와 RIGHT의 두 가지 함수를 동시에 고려해 보겠습니다. 두 함수는 동작이 유사합니다.

왼쪽(str ,렌 정수)
오른쪽(str ,렌 정수)

LEFT 함수는 문자열 str에서 첫 번째 문자의 len을 반환하고, RIGHT 함수는 마지막 len을 반환합니다. 멀티바이트 문자를 지원합니다.

SELECT LEFT("모스크바", 3);
결과: 모스
SELECT RIGHT("모스크바", 3);
결과: 콰

하위 문자열(str ,포스 정수,렌 정수)
중간(str ,포스 정수,렌 정수)

이 함수를 사용하면 위치 pos에서 길이가 len 문자인 문자열 str의 하위 문자열을 얻을 수 있습니다. len 매개변수가 설정되지 않은 경우 pos 위치부터 시작하여 전체 하위 문자열이 반환됩니다.

SELECT SUBSTRING ("모스크바는 러시아의 수도입니다", 4, 6);
결과: 모스크바
SELECT SUBSTRING ("모스크바는 러시아의 수도입니다", 4);
결과: 모스크바는 러시아의 수도이다

결과가 유사하므로 MID 함수에 대한 예를 제공하지 않습니다.

흥미로운 SUBSTRING_INDEX 함수:

SUBSTRING_INDEX(str , 나누다 , 세다 정수)

이 함수는 위치 개수에서 구분 기호 구분 뒤에 있는 문자를 삭제하여 얻은 문자열 str의 하위 문자열을 반환합니다. count 매개변수는 양수 또는 음수일 수 있습니다. 개수가 양수이면 구분 기호 위치는 왼쪽부터 계산되고 구분 기호 오른쪽에 있는 문자는 삭제됩니다. count가 음수이면 구분 기호 위치는 오른쪽으로 계산되고 구분 기호 왼쪽에 있는 문자는 제거됩니다. 설명이 너무 혼란스러울 수도 있지만 예제를 보면 더 명확해질 것입니다.

SELECT SUBSTRING_INDEX("www.mysql.ru", ".", 1);
결과: www

이 예에서 함수는 문자열 "www.mysql.ru"에서 마침표 문자가 처음 나타나는 것을 찾아 구분 기호 자체를 포함하여 그 뒤의 모든 문자를 제거합니다.

SELECT SUBSTRING_INDEX("www.mysql.ru", ".", 2);
결과: www.mysql

여기서 함수는 두 번째 마침표를 찾아 오른쪽에 있는 모든 문자를 제거하고 결과 하위 문자열을 반환합니다. 그리고 count 매개변수의 음수 값을 사용한 또 다른 예는 다음과 같습니다.

SELECT SUBSTRING_INDEX("www.mysql.ru", ".", -2);
결과: mysql.ru

이 예에서 SUBSTRING_INDEX 함수는 오른쪽 위치부터 세어 두 번째 점을 찾고 그 왼쪽에 있는 문자를 제거한 후 결과 하위 문자열을 반환합니다.

문자열에서 공백 제거

문자열의 시작과 끝에서 추가 공백을 제거하기 위해 SQL에는 세 가지 기능이 있습니다.

LTIM 기능:

LTRIM(str )

str의 시작 부분에서 공백을 제거하고 결과를 반환합니다.

RTIM 기능:

RTRIM(str )

또한 str의 끝에서만 공백을 제거합니다. 두 함수 모두 멀티바이트 문자를 지원합니다.

SELECT LTRIM("텍스트");
결과: "텍스트"
SELECT RTRIM("텍스트");
결과: "텍스트"

세 번째 TRIM 함수를 사용하면 문자열의 시작과 끝에서 공백을 즉시 제거할 수 있습니다.

손질([ 보낸 사람] str )

str 매개변수는 필수이고 다른 매개변수는 선택사항입니다. str 매개변수가 하나만 주어지면 문자열의 시작과 끝에서 동시에 공백을 제거하여 문자열 str을 반환합니다.

SELECT TRIM("텍스트");
결과: "텍스트"

remstr 매개변수를 사용하면 문자열의 시작과 끝에서 제거할 문자 또는 하위 문자열을 지정할 수 있습니다. BOTH, LEADING, TRAILING 제어 매개변수를 사용하여 문자가 제거될 위치를 지정할 수 있습니다.

  • BOTH - 문자열의 시작과 끝에서 remstr 하위 문자열을 제거합니다.
  • LEADING - 줄의 시작 부분에서 remstr을 제거합니다.
  • TRAILING - 문자열 끝에서 remstr을 제거합니다.

SELECT TRIM(둘 다 "a" FROM "텍스트");
결과: "텍스트"
SELECT TRIM("textaa"에서 "a" 시작);
결과: "textaaa"
SELECT TRIM("aaatext"에서 후행 "a");
결과: "aaatext"

SPACE 함수를 사용하면 특정 개수의 공백으로 구성된 문자열을 얻을 수 있습니다.

공간(N 정수)

n개의 공백으로 구성된 문자열을 반환합니다.

REPLACE 함수가 필요합니다. 문자열에서 주어진 문자 바꾸기:

바꾸다(str , from_str , to_str )

이 함수는 문자열 str에서 from_str의 모든 하위 문자열을 to_str로 바꾸고 결과를 반환합니다. 멀티바이트 문자를 지원합니다.

SELECT REPLACE("하위 문자열 바꾸기", "하위 문자열", "텍스트")
결과: "텍스트 교체"

반복 기능:

반복하다(str , 세다 정수)

이 함수는 문자열 str의 반복 횟수로 구성된 문자열을 반환합니다. 멀티바이트 문자를 지원합니다.

SELECT REPEAT("w", 3);
결과: "www"

REVERSE 함수는 문자열을 반전시킵니다.

뒤집다(str )

str의 모든 문자를 마지막에서 처음으로 역순으로 바꾸고 결과를 반환합니다. 멀티바이트 문자를 지원합니다.

SELECT REVERSE("텍스트");
결과: "tsket"

문자열에 하위 문자열을 삽입하는 INSERT 함수:

끼워 넣다(str ,포스 정수,렌 정수, 뉴스스트 )

pos 위치의 문자열 str에 newstr 하위 문자열을 삽입한 결과 얻은 문자열을 반환합니다. len 매개변수는 문자열 str에서 pos 위치부터 제거할 문자 수를 지정합니다. 멀티바이트 문자를 지원합니다.

SELECT INSERT("텍스트", 2, 5, "MySQL");
결과: "tMySQL"
"SELECT INSERT("텍스트", 2, 0, "MySQL");
결과: "tMySQLext"
SELECT INSERT("텍스트 삽입", 2, 7, "MySQL");
결과: "SELECT INSERT("텍스트 삽입", 2, 7, "MySQL");"

갑자기 텍스트의 모든 대문자를 대문자로 바꿔야 하는 경우 다음 두 가지 기능 중 하나를 사용할 수 있습니다.

LCASE(str ) 그리고 낮추다(str )

두 함수 모두 str의 대문자를 대문자로 바꾸고 결과를 반환합니다. 둘 다 멀티바이트 문자를 지원합니다.

SELCET LOWER("ABCDEJZYCL");
결과: "abvgDeZicle"

반대로 대문자를 대문자로 바꿔야 하는 경우 다음 두 기능 중 하나를 사용할 수도 있습니다.

UCASE(str ) 그리고 UPPER(str )

이 함수는 모든 대문자가 대문자로 대체된 문자열 str을 반환합니다. 멀티바이트 문자도 지원합니다.
예:

SELECT UPPER("abcdejz");
결과: "ABVGDEZHZ"

SQL 언어에는 이 문서에서 설명한 것보다 몇 가지 더 많은 문자열 함수가 있습니다. 하지만 여기에서 설명하는 기능들 중 대부분은 거의 사용되지 않기 때문에 리뷰를 마치겠습니다. 다음 기사에서는 SQL 문자열 함수를 사용하는 실제 실제 사례를 살펴보겠습니다. 따라서 블로그 업데이트를 구독하는 것을 잊지 마십시오. 곧 봐요!

대부분의 프로그래밍 언어와 마찬가지로 SQL에도 데이터 처리 기능이 있습니다. SQL 문과 달리 함수는 모든 유형의 DBMS에 대해 표준화되어 있지 않습니다. 즉, 데이터에 대해 동일한 작업을 수행하기 위해 서로 다른 DBMS에는 고유한 함수 이름이 있습니다. 이는 하나의 DBMS에 작성된 쿼리 코드가 다른 DBMS에서는 작동하지 않을 수 있다는 것을 의미하며, 향후에는 이 점을 고려해야 합니다. 무엇보다도 이는 텍스트 값 처리, 데이터 유형 변환 및 날짜 조작 기능과 관련이 있습니다.

일반적으로 DBMS는 다음과 같은 표준 함수 유형 세트를 지원합니다.

  • 텍스트 처리에 사용되는 텍스트 기능(텍스트의 문자 일부 선택, 텍스트 길이 결정, 문자를 대문자 또는 소문자로 변환...)
  • 숫자 함수. 숫자 값에 대한 수학 연산을 수행하는 데 사용됩니다.
  • 날짜 및 시간 기능(날짜 및 시간 조작 수행, 날짜 사이의 기간 계산, 날짜의 정확성 확인 등)
  • 통계 기능(최대/최소값, 평균값 계산, 숫자 계산 및 합계...)
  • 시스템 기능(DBMS, 사용자 등에 대한 다양한 서비스 정보 제공)

1. 텍스트 처리를 위한 SQL 함수

Access DBMS의 SQL 구현에는 텍스트 처리를 위한 다음과 같은 기능이 있습니다.

함수를 사용하여 제품 이름을 대문자로 변환해 보겠습니다. U케이스():

선택하다 제품, UCase(제품) AS 제품_UCase FROM Sumproduct

기능을 사용하여 텍스트의 처음 세 문자를 선택하십시오. 왼쪽():

선택하다 제품, LEFT(제품, 3) AS 제품_LEFT FROM Sumproduct

2. 숫자 처리를 위한 SQL 함수

숫자 처리 기능은 숫자 데이터에 대한 수학적 연산을 수행하도록 설계되었습니다. 이러한 함수는 대수 및 기하학적 계산을 위한 것이므로 날짜 및 시간 처리 함수보다 훨씬 덜 자주 사용됩니다. 그러나 숫자 함수는 모든 SQL 버전에서 가장 표준화되어 있습니다. 숫자 함수 목록을 살펴보겠습니다.

주요 기능 중 몇 가지만 나열했지만 지원되는 기능의 전체 목록과 자세한 설명은 언제든지 데이터베이스 설명서를 참조할 수 있습니다.

예를 들어, 열에 있는 숫자의 제곱근을 구하는 쿼리를 작성해 보겠습니다. 기능을 사용하여 SQR():

선택하다 금액, SQR(금액) AS Amount_SQR FROM Sumproduct

3. 날짜 및 시간 처리를 위한 SQL 함수

날짜 및 시간 조작 함수는 가장 중요하고 자주 사용되는 SQL 함수 중 하나입니다. 데이터베이스는 날짜와 시간 값을 특별한 형식으로 저장하기 때문에 추가적인 처리 없이 바로 사용할 수는 없다. 각 DBMS에는 날짜 처리를 위한 고유한 기능 세트가 있지만 안타깝게도 이를 다른 플랫폼 및 SQL 구현으로 전송할 수는 없습니다.

날짜와 시간을 처리하는 일부 함수 목록 DBMS 액세스:

함수가 어떻게 작동하는지 예를 살펴보겠습니다. 날짜부분():

선택하다 Date1, DatePart("m", Date1) AS Month1 FROM Sumproduct

기능 날짜부분()날짜의 필수 부분을 표시할 수 있는 추가 매개변수가 있습니다. 예제에서는 매개변수를 사용했습니다. "중", 월 번호를 표시합니다(연도를 표시할 수 있는 것과 같은 방식으로 - "으이이이이", 4분의 1 - "큐", 낮 - "디", 주 - "여", 시간 - "시간", 분 - "N", 초 - "에스"등.).

4. SQL 통계 함수

통계 기능을 사용하면 샘플링하지 않고도 미리 만들어진 데이터를 얻을 수 있습니다. 이러한 기능을 갖춘 SQL 쿼리는 다양한 보고서를 분석하고 생성하는 데 자주 사용됩니다. 이러한 선택의 예로는 테이블의 행 수 결정, 특정 필드에 대한 값의 합계 가져오기, 지정된 테이블 열에서 최대/최소 또는 평균 값 검색 등이 있습니다. 또한 통계 함수는 철자법의 큰 변경 없이 모든 DBMS에서 지원됩니다.

의 통계 함수 목록 DBMS 액세스:

세다():

선택하다 COUNT(*) AS Count1 FROM Sumproduct- 테이블의 모든 행 수를 반환합니다.

선택하다 COUNT(제품) AS Count2 FROM Sumproduct- 필드에 있는 비어 있지 않은 모든 행의 수를 반환합니다. 제품

열에서 하나의 값을 의도적으로 제거했습니다. 제품두 쿼리의 작동 방식의 차이점을 보여줍니다.

기능 사용 예 합집합():

선택하다 SUM(수량) AS Sum1 FROM Sumproduct WHERE 월 = "4월"

이번 요청에는 4월에 판매된 총 상품 수가 반영되었습니다.

선택하다 SUM(수량*금액) AS Sum2 FROM Sumproduct

보시다시피 집계 함수에서는 표준 수학 연산자를 사용하여 여러 열에 대한 계산을 수행할 수 있습니다.

기능 사용 예 최소():

선택하다 MIN(금액) AS Min1 FROM Sumproduct

기능 사용 예 최대():

선택하다 MAX(금액) AS Max1 FROM Sumproduct

기능 사용 예 평균():

선택하다 AVG(금액) AS Avg1 FROM Sumproduct