回答編集履歴

1

質問に対する追記

2022/03/11 05:53

投稿

ababa_Sigrun
ababa_Sigrun

スコア279

test CHANGED
@@ -48,3 +48,44 @@
48
48
 
49
49
  UPDATEするデータの抽出ができたのでUPDATEします。
50
50
  ※余談ですがカラム名も一緒にSELECTに追加すると数値化する前のものが見えて便利かもしれないです。
51
+ ----
52
+ #追記分
53
+ >アルファベットが複数文字ならばそのアルファベットの後ろが数値であることも条件にいれて調べることで取得可能です。
54
+ >ISNUMERIC関数とLEFTを組み合わせることで実装可能かと思います。
55
+ 質問があったので、上記に対する追記をします。
56
+ 例として
57
+ |項目の値1|項目の値2|項目の値3|
58
+ |:--|:--:|--:|
59
+ ||||
60
+ A0009|AA003|AAA05
61
+
62
+ があるとし、'AA'を取得したいとします。
63
+
64
+ ```SQL
65
+ WHERE LEFT(項目名,LEN('AA')) = 'AA'
66
+ -- または
67
+ WHERE LEFT(項目名,2) = 'AA'
68
+ ```
69
+ 上記だとAAA05も取得してしまうので、
70
+ 3文字目が数字かどうかをチェックします。
71
+ ```SQL
72
+ LEFT(項目名,3)
73
+ ```
74
+ とすると
75
+ 3文字とってしまうのでRIGHTを組み合わせて
76
+ その3文字の右から1文字を取得します。(SUBSTRINGで一気にやっても良いと思いますが分かりやすそうなこちらを説明します)
77
+
78
+
79
+ ```SQL
80
+ RIGHT(LEFT(項目名,3),1)
81
+
82
+ ```
83
+ これで3文字目の文字だけを取得することができました。
84
+ ISNUMERIC関数を使い判定することで数字なら1文字列なら0を返してくれるので
85
+ ```SQL
86
+ WHERE
87
+ LEFT(項目名,LEN('AA')) = 'AA'
88
+ AND
89
+ ISNUMERIC(RIGHT(LEFT(項目名,3),1))=1
90
+ ```
91
+ とすることで取得可能です。