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

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

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

SQLServerの文字列を変換する方法

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■87849 / inTopicNo.1)  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
引用返信 編集キー/
■87850 / inTopicNo.2)  Re[1]: SQLServerの文字列を変換する方法
□投稿者/ PANG2 (217回)-(2018/07/05(Thu) 15:34:30)
No87849 (夜叉丸 さん) に返信
> 文字列の両端に指定した文字があれば削除したいのですが
> どうすればよいのでしょうか?

ストアドファンクションを用意する。
引用返信 編集キー/
■87851 / inTopicNo.3)  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')

引用返信 編集キー/
■87855 / inTopicNo.4)  Re[2]: SQLServerの文字列を変換する方法
□投稿者/ 氏 (1回)-(2018/07/06(Fri) 19:22:21)
SQLServer2017ならTrimを使いましょう

https://docs.microsoft.com/ja-jp/sql/t-sql/functions/trim-transact-sql?view=sql-server-2017

引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ