回答編集履歴

3

追記を削除

2018/11/07 04:06

投稿

mikupedia
mikupedia

スコア159

test CHANGED
@@ -12,22 +12,6 @@
12
12
 
13
13
  ```
14
14
 
15
- 正規表現使った方法
15
+ <messageKey></messageKey>が0~1つ存在すること前提とします。
16
16
 
17
- [別の質問](https://teratail.com/questions/156488)で回答しましたがsubstringは正規表現が使えるので下記と等価です。
18
-
19
- ```SQL
20
-
21
- select
22
-
23
- substring(列名,'(<messageKey>.*</messageKey>)') as messageKey
24
-
25
- from テーブル名
26
-
27
- where 列名 ~* '<messageKey>'
28
-
29
- ```
30
-
31
- いずれも<messageKey></messageKey>が0~1つ存在することを前提とします。
32
-
33
- postgresql9.3で確認しています。
17
+ SQLServer2012で確認しています。

2

正規表現を使ったパターンを追記

2018/11/07 04:06

投稿

mikupedia
mikupedia

スコア159

test CHANGED
@@ -11,3 +11,23 @@
11
11
  select substring(列名,charindex('<messageKey>',列名),charindex('</messageKey>',列名) + len('</messageKey>') - charindex('<messageKey>',列名)) from テーブル名 where patindex('%<messageKey>%</messageKey>%',列名) <> 0
12
12
 
13
13
  ```
14
+
15
+ 正規表現を使った方法
16
+
17
+ [別の質問](https://teratail.com/questions/156488)で回答しましたがsubstringは正規表現が使えるので下記と等価です。
18
+
19
+ ```SQL
20
+
21
+ select
22
+
23
+ substring(列名,'(<messageKey>.*</messageKey>)') as messageKey
24
+
25
+ from テーブル名
26
+
27
+ where 列名 ~* '<messageKey>'
28
+
29
+ ```
30
+
31
+ いずれも<messageKey></messageKey>が0~1つ存在することを前提とします。
32
+
33
+ postgresql9.3で確認しています。

1

誤記訂正

2018/11/07 03:00

投稿

mikupedia
mikupedia

スコア159

test CHANGED
@@ -8,6 +8,6 @@
8
8
 
9
9
  ```SQL
10
10
 
11
- Select substring(列名,charindex('<messageKey>',列名),charindex('</messageKey>',列名) + len('</messageKey>') - charindex('<messageKey>',列名)) from テーブル名 where PATINDEX('%<messageKey>%</messageKey>%',列名) <> 0
11
+ select substring(列名,charindex('<messageKey>',列名),charindex('</messageKey>',列名) + len('</messageKey>') - charindex('<messageKey>',列名)) from テーブル名 where patindex('%<messageKey>%</messageKey>%',列名) <> 0
12
12
 
13
13
  ```