选择字符串的最后 3 个字符 SQL

Selecting the last 3 characters of a string SQL

有人可以帮我解决一些 SQL 我正在努力解决的问题吗?

我需要 select 包含文件名的字段的最后 3 个字符(以便我可以获取所述文件的扩展名)。理想情况下,我想要这些值的计数。

选择字符串的前 3 个字符很简单,但我不知道如何 select 选择最后的 3 个字符 - 文件名的长度各不相同。

谢谢。

两种常见的方式是:

select right(filename, 3)
select substr(filename, -3)

但是,我要提醒您,并非所有文件名都有 3 个字符。我建议您再问一个问题,提供更多信息和您正在使用的文件名示例。

如果文件扩展名不是只有 3 个字符...并且您在其他任何地方都没有句点。

declare @somefile varchar(64) = '/server/folder/sub_folder/file.extension'

select
    substring(@somefile,charindex('.',@somefile) + 1,99)

或者,如果文件路径中确实有句点,这是可能的,但并不明智。

declare @somefile varchar(64) = '/ser.ver/fo.lder/sub.folder/file.extension'

select
    right(@someFile,charindex('.',reverse(@somefile)) - 1)