Sql 从字符串db2获取子字符串
例如,我有两个字符串:Sql 从字符串db2获取子字符串,sql,string,replace,db2,Sql,String,Replace,Db2,例如,我有两个字符串: FO-123-4444-3353-9999-TEXT and 123-4444-3353-88888-something 我如何在没有文本的情况下得到子字符串,如果有FO也没有FO,那么如何在末尾得到一些东西。FO将始终存在或不存在,但文本可以有任何其他单词代替 最终结果应为: 123-4444-3353-88888 and 123-4444-3353-9999 这回答了问题的原始版本 假设“TEXT”和“FO”不出现在字符串中的任何其他位置(如示例中),您可以使用R
FO-123-4444-3353-9999-TEXT and
123-4444-3353-88888-something
我如何在没有文本的情况下得到子字符串,如果有FO也没有FO,那么如何在末尾得到一些东西。FO将始终存在或不存在,但文本可以有任何其他单词代替
最终结果应为:
123-4444-3353-88888 and
123-4444-3353-9999
这回答了问题的原始版本 假设“TEXT”和“FO”不出现在字符串中的任何其他位置(如示例中),您可以使用
REPLACE()
:
对于修改后的问题,您可以使用regexp\u replace()
:
这假设“FO”和“TEXT”位于字符串的开头和结尾。这回答了问题的原始版本 假设“TEXT”和“FO”不出现在字符串中的任何其他位置(如示例中),您可以使用
REPLACE()
:
对于修改后的问题,您可以使用regexp\u replace()
:
这假设“FO”和“TEXT”位于字符串的开头和结尾。如果要替换开头的FO-和结尾的-TEXT,请使用regexp\u replace。可以使用或(|)在单个regexp中完成 结果:
123-4444-3353-9999
如果要在开头替换FO-并在结尾替换-TEXT,请使用regexp\u replace。可以使用或(|)在单个regexp中完成 结果:
123-4444-3353-9999
FO只在字符串中出现或不出现一次,但文本值可以不同,一次文本,文本1…文本发生了什么变化,所以我在“bla”或任何其他单词的末尾有?FO只在字符串中出现或不出现一次,但文本值可以不同,一次文本,文本1…什么样的it文本改变了我在“bla”或任何其他单词的结尾?什么样的it文本改变了我在“bla”或任何其他单词的结尾?也许最好使用子字符串并检查'-'的出现?@John。然后调整正则表达式。你一直在改变问题。你应该接受你实际提出的问题的答案,而不是不断地移动。如果需要的话,你可以问一个新问题。好吧,我同意,你的答案对我的第一次回答是正确的question@John例如,从SYSIBM.SYSDUMMY1中选择regexp_replace('FO-123-4444-3353-9999-TEXT',“^FO-|-[^-]*$,”),这将删除结尾处没有破折号的任何其他字符,包括最后一个dash它的文本更改是什么,所以我在最后有bla或任何其他单词?也许最好使用子字符串并检查'-'的出现?@John。然后调整正则表达式。你一直在改变问题。你应该接受你实际提出的问题的答案,而不是不断地移动。如果需要的话,你可以问一个新问题。好吧,我同意,你的答案对我的第一次回答是正确的question@John例如,从SYSIBM.SYSDUMMY1中选择regexp_replace('FO-123-4444-3353-9999-TEXT',“^FO-|-[^-]*$,”),这将删除任何其他末端不是破折号的字符,包括最后一个破折号
select regexp_replace('FO-123-4444-3353-9999-TEXT','^FO-|-TEXT$','') from SYSIBM.SYSDUMMY1;
123-4444-3353-9999