teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

修正

2017/11/16 10:21

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -10,14 +10,14 @@
10
10
  ```
11
11
  修正
12
12
  ---
13
- 数値を全て空文字にして、結果が''なら全て数字、
13
+ 数値と空白を全て空文字にして、結果が''なら全て数字、
14
14
  ・数値に変換して文字に変換(0サプレス)
15
- それ以外は数字を除去
15
+ それ以外は数字と空白を除去
16
16
  前回同様に試せていません。
17
17
  ```SQL
18
- case when translate(ID,'0123456789','')='' then
18
+ case when translate(ID,'0123456789 ','')='' then
19
19
  convert(varchar, convert(int, ID))
20
20
  else
21
- translate(ID,'0123456789','')
21
+ translate(ID,'0123456789 ','')
22
22
  end
23
23
  ```

2

修正

2017/11/16 10:21

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -10,12 +10,12 @@
10
10
  ```
11
11
  修正
12
12
  ---
13
- 数値を全て空文字にして、文字数なら全て数字
13
+ 数値を全て空文字にして、結果''なら全て数字、
14
14
  ・数値に変換して文字に変換(0サプレス)
15
15
  それ以外は数字を除去
16
- 前回同様に試せていません。※空文字に対してlen()で0かどうかが気になる点
16
+ 前回同様に試せていません。
17
17
  ```SQL
18
- case when len(translate(ID,'0123456789',''))=0 then
18
+ case when translate(ID,'0123456789','')='' then
19
19
  convert(varchar, convert(int, ID))
20
20
  else
21
21
  translate(ID,'0123456789','')

1

修正

2017/11/16 10:19

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -7,4 +7,17 @@
7
7
  もし、空白が含まれているとしたら、trim()を使用
8
8
  ```SQL
9
9
  case when replicate('0',len(ltrim(rtrim(ID))))=ltrim(rtrim(ID)) then '0' else replace(ltrim(rtrim(ID)),'0','') end
10
+ ```
11
+ 修正
12
+ ---
13
+ 数値を全て空文字にして、文字数が0なら(全て数字)、
14
+ ・数値に変換して文字に変換(0サプレス)
15
+ それ以外は数字を除去
16
+ 前回同様に試せていません。※空文字に対してlen()で0かどうかが気になる点
17
+ ```SQL
18
+ case when len(translate(ID,'0123456789',''))=0 then
19
+ convert(varchar, convert(int, ID))
20
+ else
21
+ translate(ID,'0123456789','')
22
+ end
10
23
  ```