Mysql SQL选择特定字符后的所有内容
我需要提取最后一个“=”(->blablabla)之后的所有内容,但此查询返回整个字符串。我在这里哪里出错了:Mysql SQL选择特定字符后的所有内容,mysql,sql,substring,string-length,Mysql,Sql,Substring,String Length,我需要提取最后一个“=”(->blablabla)之后的所有内容,但此查询返回整个字符串。我在这里哪里出错了: SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference)) FROM ps_product 请使用以供进一步参考。尝试此操作(如果字符串中有多个“=”字符,则此操作应有效): 在MySQL中试试这个 right(field,((CHAR_
SELECT RIGHT(supplier_reference, CHAR_LENGTH(supplier_reference) - SUBSTRING('=', supplier_reference))
FROM ps_product
请使用以供进一步参考。尝试此操作(如果字符串中有多个“=”字符,则此操作应有效):
在MySQL中试试这个
right(field,((CHAR_LENGTH(field))-(InStr(field,','))))
对于SQLManagementStudio,我使用了BWS答案的变体。这将获取“=”右侧的数据,如果符号不存在,则为NULL:
CASE WHEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN
0 ELSE CHARINDEX('=', supplier_reference) -1 END)) <> '' THEN (RIGHT(supplier_reference, CASE WHEN (CHARINDEX('=',supplier_reference,0)) = 0 THEN
0 ELSE CHARINDEX('=', supplier_reference) -1 END)) ELSE NULL END
CASE-WHEN(右(供应商参考,CASE-WHEN(CHARINDEX('=',供应商参考,0))=0然后
0 ELSE CHAINDEX('=',供应商\参考)-1结束))“”然后(右(供应商\参考,案例为(CHAINDEX('=',供应商\参考,0))=0然后
0 ELSE CHAINDEX('=',供应商_引用)-1 END)ELSE NULL END
在MySQL中,如果字符串中有多个“=”字符,则此选项有效
SUBSTRING(supplier_reference FROM (LOCATE('=',supplier_reference)+1))
它在(+1)找到第一个=后返回子字符串。我一直在做类似的事情,经过几次尝试,失败后得出以下结论: 例如: STRING-TO-TEST-ON='ab、cd、ef、gh' 我想从字符串中提取最后一次出现“,”(逗号)之后的所有内容。。。导致“生长激素” 我的问题是:
SELECT SUBSTR('ab,cd,ef,gh' FROM (LENGTH('ab,cd,ef,gh') - (LOCATE(",",REVERSE('ab,cd,ef,gh'))-1)+1)) AS `wantedString`
现在让我试着解释一下我做了什么
LOCATE(“,”,REVERSE('ab,cd,ef,gh'))-1来计算所需的字符串长度,通过反转初始字符串,我实际上必须找到字符串中第一个出现的“,”。。。这并不难做到。。。然后-1来实际查找不带“,”的字符串长度
我还没有在大字符串上测试查询,所以我不知道它有多慢。因此,如果有人真的在一个大字符串上测试它,我会很高兴知道结果。您使用的是什么数据库引擎?这不是SQL Server,对吗?请看以下答案:谢谢您的贡献。添加一些关于如何解决问题的解释会更有帮助。这可能会导致一些问题,如果列中没有“=”,那么您可以使用:
从ps_产品中选择IF(LOCATE(“=”,supplier_reference),SUBSTRING_INDEX(supplier_reference,“=”,-1),default_值您可以设置一个默认值,而不是返回原始的完整列。如果字符串包含多个“=”并且我希望所有内容都在第一个“=”之后,该怎么办?这并不完全正确。为了能够设置正确的负索引,您需要准确地知道搜索字符串在主题中出现的次数。这可能会有所帮助:当存在多个“=”并且我们希望第一次出现“=”之后的字符串在MySQL中不存在时,这是很有用的,而这个问题是关于MySQL的。MySQL的替代方案是定位。
SUBSTRING(supplier_reference FROM (LOCATE('=',supplier_reference)+1))
SELECT SUBSTR('ab,cd,ef,gh' FROM (LENGTH('ab,cd,ef,gh') - (LOCATE(",",REVERSE('ab,cd,ef,gh'))-1)+1)) AS `wantedString`