1. ホーム
  2. sql

[解決済み] SQL Serverで特定の文字の後と前のすべてを取得する

2022-03-02 03:14:59

質問

データベースに次のような項目があります。

images/test.jpg

エントリーをトリミングしたいので、以下のようになります。 test

つまり、基本的には / とその前の .

どうすれば解決できるのでしょうか?

どのように解決するのですか?

SQLを使ってテーブルからこれを取り出したい場合、以下の関数が役に立ちますので見てみてください。 SUBSTRING CHARINDEX . それらを使って、エントリーをトリミングすることができます。

可能なクエリは次のようになります(ここで col は、画像ディレクトリを含むカラムの名前です。

SELECT SUBSTRING(col, LEN(SUBSTRING(col, 0, LEN(col) - CHARINDEX ('/', col))) + 1, 
    LEN(col) - LEN(SUBSTRING(col, 0, LEN(col) - CHARINDEX ('/', col))) - LEN(SUBSTRING(
    col, CHARINDEX ('.', col), LEN(col))));

ちょっと醜い獣。また、'dir/name.ext'という標準的なフォーマットに依存しています。

編集する
この作品(インスパイアされた プラベーン ) は、より一般的で、異なる長さの拡張子を扱います。

SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('/', col))) + 1, LEN(col) - LEN(LEFT(col, 
    CHARINDEX ('/', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX ('.', col))) - 1);