格式化SQL字符串

时间:2015-12-14 18:41:12

标签: sql sql-server string trim charindex

我在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

我使用各种函数_RIGHTLEFTCHARINDEX和所有函数来处理多个TRIM个字符。

1 个答案:

答案 0 :(得分:1)

这在SQL中很难做到,因为没有split函数。在其他编程语言中很容易做到。我考虑将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"