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

时间:2015-10-16 19:15:07

标签: tsql sybase

我在Sybase工作,这个表有'ID'列,'File_Name'

表1

winner? [[:x, :o, :o], [:o, :o, :x], [:x, :x, :o]]
  #=> :no_winner

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

必需:

IDS    File_Name_Attached
123    ROSE1234_abcdefghi_03012014_04292014_190038.zip   
456    ROSE1234_abcdefghi_08012014_04292014_190038.zip

1 个答案:

答案 0 :(得分:1)

您可以使用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 DB,所以如果这不起作用,请告诉我。