在SQL Server中拆分斜杠分隔值

时间:2016-07-12 16:27:58

标签: sql sql-server-2012

我有一个像这样的字符串值:

<?php

$installer = $this;
$installer->startSetup();


$table = $installer->getTable('cms/page');

$installer->getConnection()->addColumn($table,'parent_id',array(
    'type'      =>Varien_Db_Ddl_Table::TYPE_INTEGER,
    'comment'   => 'Parent CMS Page'
));

$installer->getConnection()->addColumn($table,'include_in_nav',
    array(
        'type'      =>Varien_Db_Ddl_Table::TYPE_BOOLEAN,
        'comment'   => 'Include in navigation menu'
    ));

$installer->getConnection()->addColumn($table,'position',
    array(
        'type'      =>Varien_Db_Ddl_Table::TYPE_INTEGER,
        'comment'   => 'Position from navigation (category) menu. 1=left; 2=right'
    )); //1: left; 2: right

$installer->endSetup();

我想摆脱

\\dsm-smo38\RepositorioEntregable\Archivos\19062016\CAPTACION\BAZ\07566\075660106201515171475.tif

并且只保留

\\dsm-smo38\RepositorioEntregable\Archivos\19062016\CAPTACION\

我该怎么做?

此致!!

3 个答案:

答案 0 :(得分:0)

如果\ dsm-smo38 \ RepositorioEntregable \ Archivos \ 19062016 \ CAPTACION \是一致的,你可以使用替换:

select replace(your_column,'\\dsm-smo38\RepositorioEntregable\Archivos\19062016\CAPTACION\','') 
from your_table

答案 1 :(得分:0)

假设'BAZ'始终在列值中。

{{1}}

答案 2 :(得分:0)

Aldo,您可以尝试以下方法。如果你不会一直在你的字符串中使用'BAZ \',你可以将下面的代码变成一个函数并传递你想要从中开始提取的任何字符串。例如,您可以设置@FilterStrng ='Archivos'。这将为您提供从'Archivos'开始的字符串。

CREATE TABLE #SplashString
    (
      StringText VARCHAR(255)
    );
INSERT  INTO #SplashString
        ( StringText )
VALUES  ( '\\dsm-smo38\RepositorioEntregable\Archivos\19062016\CAPTACION\BAZ\07566\075660106201515171475.tif'  -- StringText - varchar(255)
          ),
        ( '\\dsm-smo38\RepositorioEntregable\Archivos\DOCS1906201601\BAZ\05884\0588402052014‌​2706162.tif'  -- StringText - varchar(255)
          );
DECLARE @FilterStrng VARCHAR(255)= 'BAZ\';
SELECT  STUFF(StringText, 1, CHARINDEX(@FilterStrng, StringText) - 1, '') AS FilteredString
FROM    #SplashString;