C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

SQLServerの文字列を変換する方法 /夜叉丸 (18/07/05(Thu) 15:16) #87849
Re[1]: SQLServerの文字列を変換する方法 /PANG2 (18/07/05(Thu) 15:34) #87850
Re[1]: SQLServerの文字列を変換する方法 /shu (18/07/06(Fri) 08:03) #87851
  └ Re[2]: SQLServerの文字列を変換する方法 /氏 (18/07/06(Fri) 19:22) #87855


親記事 / ▼[ 87850 ] ▼[ 87851 ]
■87849 / 親階層)  SQLServerの文字列を変換する方法
□投稿者/ 夜叉丸 (123回)-(2018/07/05(Thu) 15:16:02)

分類:[.NET 全般] 

文字列の両端に指定した文字があれば削除したいのですが
どうすればよいのでしょうか?

'ABC'→'ABC'
'-ABC'→'ABC'
'-ABC-'→'ABC'
'ABC-'→'ABC'

力づくでやってみると以下のようになるのですが
もっと Replace や LTrim や RTrim などを使って
スマートにできる方法はありますか?

SELECT ABC
FROM (
 SELECT CASE WHEN SUBSTRING(ABC, LEN(ABC), 1) = '-' THEN SUBSTRING(ABC, 1, LEN(ABC) - 1) ELSE ABC END AS ABC
 FROM (
  SELECT CASE WHEN SUBSTRING(ABC, 1, 1) = '-' THEN SUBSTRING(ABC, 2, LEN(ABC) - 1) ELSE ABC END AS ABC
  FROM (
   SELECT 'ABC' AS ABC
   UNION SELECT '-ABC' AS ABC
   UNION SELECT 'ABC-' AS ABC
   UNION SELECT '-ABC-' AS ABC
  ) AS ABC1
 ) ABC2
) ABC3
[ □ Tree ] 返信 編集キー/

▲[ 87849 ] / 返信無し
■87850 / 1階層)  Re[1]: SQLServerの文字列を変換する方法
□投稿者/ PANG2 (217回)-(2018/07/05(Thu) 15:34:30)
No87849 (夜叉丸 さん) に返信
> 文字列の両端に指定した文字があれば削除したいのですが
> どうすればよいのでしょうか?

ストアドファンクションを用意する。
[ 親 87849 / □ Tree ] 返信 編集キー/

▲[ 87849 ] / ▼[ 87855 ]
■87851 / 1階層)  Re[1]: SQLServerの文字列を変換する方法
□投稿者/ shu (1130回)-(2018/07/06(Fri) 08:03:43)
No87849 (夜叉丸 さん) に返信

スカラ値関数を用意する。

例)
CREATE FUNCTION TrimSample
(
	@src nvarchar(500)
)
RETURNS nvarchar(500)
AS
BEGIN
    DECLARE @ret nvarchar(500)

    set @ret = @src;
    if SUBSTRING(@ret,1,1) = '-' set @ret = SUBSTRING(@ret, 2, LEN(@ret) - 1);

    if SUBSTRING(@ret,len(@ret),1) = '-' set @ret = SUBSTRING(@ret, 1, LEN(@ret) - 1);

    RETURN @ret

END


Select方法例)
select dbo.TrimSample('-ABC')

select dbo.TrimSample('-ABC-')

select dbo.TrimSample('ABC-')

select dbo.TrimSample('ABC')

[ 親 87849 / □ Tree ] 返信 編集キー/

▲[ 87851 ] / 返信無し
■87855 / 2階層)  Re[2]: SQLServerの文字列を変換する方法
□投稿者/ 氏 (1回)-(2018/07/06(Fri) 19:22:21)
[ 親 87849 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -