2015-12-14 84 views
0

我有一个SQL视图以下格式不同的值:格式SQL字符串

SoftwareName_Language_Architecture_Type_Version_ {GUID} _INSTALL.Log

例:Java-v6.27_ALL_x86_MSI_pV1.0_{26A24AE4-039D-4CA4-87B4-2F86416027FF}_INSTALL.Log

我想这个结果在型动物柱:

SoftwareName 
Architecture 
Language 

我在使用多种功能跺跺多个_字符RIGHTLEFT,CHARINDEX,TRIM和全部。

+0

在你的格式掩码,您有4个下划线,但在你的数据。例如,你有6.你有多余的处理下划线的规则? –

+0

我更正了这个帖子 –

+0

在Postgres中你只需要使用string_to_array(),但是在SQL Server中,你需要自己定义一个表值函数,参见https://msdn.microsoft.com/en-us/library /ms191165.aspx – cliffordheath

回答

1

这在SQL中很难做,因为没有分割功能。在其他编程语言中很容易做到。我会考虑让你的SQL输出到一个文件中,然后处理与编程语言如Python的该文件,例如:

>>> field='Java-v6.27_ALL_x86_MSI_pV1.0_{26A24AE4-039D-4CA4-87B4- 
>>> print '\n'.join(field.split('_')) 
Java-v6.27 
ALL 
x86 
MSI 
pV1.0 
{26A24AE4-039D-4CA4-87B4-2F86416027FF} 
INSTALL.Log 

或者Bash中

echo 'Java-v6.27_ALL_x86_MSI_pV1.0_{26A24AE4-039D-4CA4-87B4-2F86416027FF}_INSTALL.Log'|sed "s/_/\n/g" 
Java-v6.27 
ALL 
x86 
MSI 
pV1.0 
{26A24AE4-039D-4CA4-87B4-2F86416027FF} 
INSTALL.Log 

而且你既可以做在SQL和命令行bash的像这样的东西:

cat getstuff.sql | mysql -uuser -ppass -hhost db | sed "s/_/\n/g"