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

SQLのSUBSTRINGコマンド:入門書

    SQLServerSTUFFコマンドに関する私の記事と同様です。 、今日はSUBSTRINGSQLサーバーコマンドを調べます。受け入れるパラメータに関しては、STUFFコマンドに似ています。

    SUBSTRINGで受け入れられるパラメーターは次のとおりです。

    SUBSTRING ( STRING_VALUE , STARTING_POSITION, LENGTH)

    SUBSTRINGコマンドは、SQL Server、MySQL、Oracle、Postgresなどのほとんどの主要な標準データベースで普及しています。

    いくつかの例を使ってSUBSTRING関数を調べてみましょう。

    セクション1-単純なSUBSTRINGの例

    この最初の例では、「ABC」の文字列値がSUBSTRING関数に渡されます。各呼び出しでは、開始位置の引数が1ずつ増加します。長さの引数は、呼び出しごとに1のままになります。

    SELECT SUBSTRING('ABC',1,1); --RETURNS : A
    
    SELECT SUBSTRING('ABC',2,1); --RETURNS : B
    
    SELECT SUBSTRING('ABC',3,1); --RETURNS : C

    これらの例から、SUBSTRING関数の一般的な機能を確認できます。開始位置が増えるたびに、返される文字がシフトします。実行#1では値はA、#2では値はB、#3では値はCです。

    SUBSTRING関数の興味深い機能は、解析している値の長さを超えても、長さパラメーターが改行されないことです。たとえば、値「1000」の長さは4桁です。 6の長さを指定する次のクエリで解析すると、SUBSTRINGは元の文字列を返します。

    SELECT SUBSTRING('1000',1,6); --RETURNS : 1000
    セクション2–SUBSTRING関数を使用したデータの解析

    次の例では、中古車に関するデータを保持するためのデータベースがあると仮定します。ただし、マルチテーブルリレーショナルデータモデルを使用する代わりに、データベースには主キーとSKUまたは在庫管理単位のみが含まれます。このSKUは、次のキーを使用して、車の特徴に関する複数のフィールドを見つけるために使用できます。

    TOY-CEL-R-1990-150
    -------------------------------------------------------
    MAKE-MODEL-COLOR-YEAR-MILEAGE

    *これらの例では、マイレージは1/1000のスケールで表されます。つまり、100 =100,000

    IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'CODESIGHT_DEMOS')
    BEGIN
      CREATE DATABASE CODESIGHT_DEMOS;
    END;
    GO
    
    USE CODESIGHT_DEMOS;
    
    IF OBJECT_ID('USEDCARS') IS NOT NULL DROP TABLE USEDCARS
    CREATE TABLE USEDCARS
    (
    ID INT IDENTITY(1,1) PRIMARY KEY,
    CAR_SKU VARCHAR(30)
    )
    
    --MAKE--MODEL--COLOR--YEAR--MILEAGE *1000
    INSERT INTO USEDCARS
    VALUES('TOY-CEL-R-1990-150')
    
    INSERT INTO USEDCARS
    VALUES('JEP-WRG-W-2019-15')
    
    INSERT INTO USEDCARS
    VALUES('FRD-ESC-G-1998-80')
    
    SELECT * FROM USEDCARS

    中古車テーブルの出力は次のとおりです。

    ID CAR_SKU
    1 TOY-CEL-R-1990-150
    2 JEP-WRG-W-2019-15
    3 FRD-ESC-G-1998-80

    SUBSTRING関数を使用すると、CAR_SKUフィールドに正しい開始位置と長さのパラメーターを割り当てることにより、これらの値を解析できます。

    SELECT SUBSTRING(CAR_SKU,1,3) AS MAKE,
    SUBSTRING(CAR_SKU,5,3) AS MODEL,
    SUBSTRING(CAR_SKU,9,1) AS COLOR,
    SUBSTRING(CAR_SKU,11,4) AS YEAR,
    SUBSTRING(CAR_SKU,16,3) * 1000 AS MILEAGE
    FROM USEDCARS;
    MAKE モデル マイレージ
    おもちゃ CEL R 1990 150000
    JEP WRG W 2019 15000
    FRD ESC G 1998 80000
    セクション3–SUBSTRINGSQLロジックのビューへの抽象化

    SQL SUBSTRING関数を使用して、データベース内の各車両のさまざまな機能を解析することができました。この1つのステップをさらに進めて、SUBSTRINGクエリのビューを作成することにより、その出力をより意味のあるデータに変換しましょう。

    リレーショナルデータモデルでは、これは、結合を使用してCASEWHENステートメントを組み込んで値を変換することで実現されます。

    CREATE VIEW  VW_CAR_INVENTORY
    
    AS
    
    SELECT 
    
    CASE WHEN SUBSTRING(CAR_SKU,1,3) = 'TOY' THEN 'TOYOTA'
         WHEN SUBSTRING(CAR_SKU,1,3) = 'JEP' THEN 'JEEP'
    	 WHEN SUBSTRING(CAR_SKU,1,3) = 'FRD' THEN 'FORD'
    	 END AS MAKE,
    
    CASE WHEN SUBSTRING(CAR_SKU,5,3) = 'CEL' THEN 'CELICA'
         WHEN SUBSTRING(CAR_SKU,5,3) = 'WRG' THEN 'WRANGLER'
    	 WHEN SUBSTRING(CAR_SKU,5,3) = 'ESC' THEN 'ESCAPE'
        END AS MODEL,
    
    CASE WHEN SUBSTRING(CAR_SKU,9,1) = 'R' THEN 'RED'
         WHEN SUBSTRING(CAR_SKU,9,1) = 'W' THEN 'WHITE'
    	 WHEN SUBSTRING(CAR_SKU,9,1) = 'G' THEN 'GREEN'
        END AS COLOR,
    
    SUBSTRING(CAR_SKU,11,4) AS YEAR,
    
    SUBSTRING(CAR_SKU,16,3) * 1000 AS MILEAGE
    
    FROM USEDCARS
    MAKE モデル マイレージ
    トヨタ セリカ 1990 150000
    JEEP ラングラー WHITE 2019 15000
    フォード エスケープ 1998 80000

    セクション4– SUBSTRING A 整数値の代替案

    SUBSTRING関数は明示的に文字列値を対象としているため、SUBSTRINGを使用して整数値を解析しようとする次のクエリは失敗します。

    SELECT SUBSTRING(1000,1,1); 
    
    --Msg 8116, Level 16, State 1, Line 78 Argument data type int is invalid for argument 1 of substring function.

    整数値を解析するときの代替手段はLEFTまたはRIGHT関数ですが、このアプローチではSUBSTRING関数で提供される柔軟性の一部が失われます。

    SELECT LEFT(10000,1); --RETURNS : 1
    SELECT RIGHT(1000,1) ;  --RETURNS : 0

    状況によっては、整数値を文字列として明示的にキャストし、キャストされた値をサブストリングすることもできます。

    SELECT (SUBSTRING(CAST(1000 AS VARCHAR(4)),1,1)) AS CASTED_SUBSTRING -- RETURNS : 1
    概要

    この記事では、開始位置と長さの強力な引数であるSUBSTRING関数を使用するために必要なパラメーターについて説明しました。非関係データモデルでは、SUBSTRINGメソッドを使用して、1フィールドテーブルから車の特徴を抽出し、いくつかの変換ロジックが組み込まれたビューを構築しました。

    SUBSTRINGメソッドは、ETLを実行するとき、またはデータベース内のデータを解析するときに知っておくと便利な関数です。データベース内の既存のデータから意味のある重要なデータポイントを抽出するために使用できます。


    1. テーブル式の基礎、パート1

    2. SQLServerのFloatとNumeric/Decimalの違いは何ですか-SQLServer/T-SQLチュートリアルパート33

    3. MySQLインデックスのガイド

    4. 相乗り用のデータモデルの作成