【问题标题】:How to get access script to work in SQL如何让访问脚本在 SQL 中工作
【发布时间】:2017-04-22 17:45:56
【问题描述】:

基本上,我想要做的是在句点之后获取文件名中的任何内容并移动到另一个名为扩展名的列,如果没有句点,则将文本带到扩展名列

SELECT 
    [UserProfile12_7-512-1mb].FileName, 
    Right([Filename], Len([Filename])-InStrRev([Filename],".")) AS Extension,
    [UserProfile12_7-512-1mb].ComputerName, 
    [UserProfile12_7-512-1mb].KB
FROM 
    [UserProfile12_7-512-1mb]
;

这是数据

【问题讨论】:

    标签: sql sql-server tsql sql-server-2012 sql-server-2008-r2


    【解决方案1】:

    您可以组合 SQL 函数 REVERSECHARINDEX,以复制相同的逻辑。

    DECLARE @FileName VARCHAR(255) = 'C:\MyFolder\MyFile.csv';
    
    -- Extract file extension.
    SELECT
        RIGHT(@FileName, CHARINDEX('.', REVERSE(@FileName)) - 1) AS Ext
    ;
    

    返回:

    Ext
    ----
    csv
    

    编辑

    以下是应用于示例查询的技术:

    SELECT 
        [UserProfile12_7-512-1mb].FileName, 
        RIGHT([Filename], CHARINDEX('.', REVERSE([Filename])) - 1) AS Extension, 
        [UserProfile12_7-512-1mb].ComputerName, 
        [UserProfile12_7-512-1mb].KB
    FROM 
        [UserProfile12_7-512-1mb]
    ;
    

    【讨论】:

    • 有没有相当于InStrRev函数的SQL函数
    • 没有。这是内置函数的full list。这些只是string functions
    • 当然,您可以将build your own 作为反向和字符索引的包装器。权衡是用户函数的性能不如原生函数。
    • 好的,帮帮我,DECLARE @FileName
    • 我需要一个示例值来演示该技术。您可以删除声明语句。然后将 @FileName 替换为您的字段名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多