回答編集履歴
2
追記
answer
CHANGED
@@ -3,4 +3,12 @@
|
|
3
3
|
```SQL
|
4
4
|
concat(case sign(num) when 1 then '+' end, num)
|
5
5
|
```
|
6
|
-
但し、値がNullのケースがあり、結果もNullとしたい場合にはNull判定が必要になります。
|
6
|
+
但し、値がNullのケースがあり、結果もNullとしたい場合にはNull判定が必要になります。
|
7
|
+
|
8
|
+
追記
|
9
|
+
--
|
10
|
+
case 部分を文字列として確定させれば,`+`演算子でも大丈夫ですね。
|
11
|
+
※Nullも問題なし。
|
12
|
+
```SQL
|
13
|
+
case sign(num) when 1 then '+' else '' end + CONVERT(VARCHAR(2),Num)
|
14
|
+
```
|
1
追記
answer
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
暗黙変換によって、`+`が文字列結合ではなくて、加算として作用しているので、明示的な[CONCAT()](https://docs.microsoft.com/ja-jp/sql/t-sql/functions/concat-transact-sql?view=sql-server-ver15)を用いましょう。
|
2
2
|
また、符号を判断するなら[SIGN()](https://docs.microsoft.com/ja-jp/sql/t-sql/functions/sign-transact-sql?view=sql-server-ver15)を使用する方がパターン分けは簡潔になります。
|
3
3
|
```SQL
|
4
|
-
concat(case sign(num) when 1 then '+'
|
4
|
+
concat(case sign(num) when 1 then '+' end, num)
|
5
|
-
```
|
5
|
+
```
|
6
|
+
但し、値がNullのケースがあり、結果もNullとしたい場合にはNull判定が必要になります。
|