0

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

我正在_使用各种函数RIGHT, LEFT,CHARINDEXTRIM所有字符来处理多个字符。

4

1 回答 1

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"
于 2015-12-14T18:49:53.907 回答