从 Sybase 中非常长的字符串名称列中获取日期

Picking up the date from very long string name column in Sybase

我在 Sybase 中使用这些 table 具有列 'ID'、'File_Name'

表 1

IDS    File_Name_Attached
123    ROSE1234_abcdefghi_03012014_04292014_190038.zip   
456    ROSE1234_abcdefghi_08012014_04292014_190038.zip

我只需要获取文件名中给出的第一个日期。

必填:

IDS     Dates  
123    03012014
456    08012014

您可以使用 SUBSTRINGPATINDEX 来查找 start_index 日期:

LiveDemo

CREATE TABLE #table1(IDS int, File_Name_attached NVARCHAR(100));

INSERT INTO #table1
VALUES (123, 'ROSE1234_abcdefghi_03012014_04292014_190038.zip'),
(456, 'ROSE1234_abcdefghi_08012014_04292014_190038.zip');

SELECT
  IDS,
  [DATES] = SUBSTRING(File_Name_attached,
                      PATINDEX('%_[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]_%', File_Name_attached) + 1,
                      8)
FROM #table1;

警告

我没有用于测试的 Sybase 数据库,所以如果这不起作用请告诉我。