我正在使用以下结果进行简单的选择查询 -
select source_uri from image
-
source_uri
"image/30022/A.jpg"
"image/30022/B.jpg"
"image/30022/C.jpg"
"image/30022/D.jpg"
"image/30023/A.jpg"
"image/30023/B.jpg"
"image/30023/C.jpg"
"image/30023/D.jpg"
"image/30024/A.jpg"
"image/30024/B.jpg"
"image/30024/C.jpg"
"image/30024/D.jpg"
我想要结果 -
source_uri
"image/30022/A.jpg"
"image/30023/B.jpg"
"image/30024/C.jpg"
我尝试过一个group by子句......但它没有分组,因为值不同。
-
我可以在mySQL中使用SUBSTRING_INDEX函数。
在Sybase中寻找确切的替代方案。
答案 0 :(得分:1)
如果总有最后6个即 D.jpg“字符,则需要应用组,然后可以使用RIGHT(col,len)
,Right返回字符串str中最右边的len个字符,如果任何参数为NULL,则为NULL
select source_uri
from image
GROUP BY RIGHT(source_uri ,6)
其他方式您需要在最后一次使用后才能使用SUBSTRING_INDEX
select source_uri
from image
GROUP BY SUBSTRING_INDEX(source_uri ,'/',-1)
SUBSTRING_INDEX(str,delim,count)
阅读评论后编辑
SUBSTRING_INDEX(source_uri ,'/',-1) /* will give you A.jpg*/
现在为了获得剩余部分,你可以这样做
SUBSTRING_INDEX(source_uri ,SUBSTRING_INDEX(source_uri ,'/',-1) ,1) /* will give you image/30022/ */
答案 1 :(得分:1)
FOR MySQL -
M Khalid Junaid的回答很有效。
FOR Sybase -
我做了一个精益技巧..不确定这是多么有效 -
select source_uri from image
问题:从“image / 30022 / a.jpg”中提取“image / 30022”
解决方案:
1)获得文件长度 - file_length = CHARINDEX('/', reverse(source_uri))
2)子串 - SUBSTRING(source_uri, 1, LEN(source_uri) - file_length)
select SUBSTRING(source_uri, 1, LEN(source_uri) - file_length) from image
group by SUBSTRING(source_uri, 1, LEN(source_uri) - file_length)