SAP HANA SQL字符串函数

时间:2018-08-27 13:31:06

标签: sql sap hana

我有一个表,其中的列LIST_OF_NUMBERS包含以下字符串:

$version = Select-Xml -Path $projectFilePath -XPath "/Project/PropertyGroup/Version"
Write-Host $version
Start-Sleep -Seconds 5
EXIT

我想将LIST_OF_NUMBERS列截断为10个字符,如下所示:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netstandard1.3</TargetFramework>
    </PropertyGroup>
    <PropertyGroup>
        <GeneratePackageOnBuild>false</GeneratePackageOnBuild>
        <AssemblyVersion>1.0.0.0</AssemblyVersion>
        <Version>1.0.1</Version>
    </PropertyGroup>
</Project>

但是,如果字符串列表中的数字被部分截断,我想截断整个数字。例如,在我的情况下,我不想显示39,因为它被误解了。我想按如下方式截断整个数字:

10, 20, 395, 443, 534, 734, 954, 105, 156

我相信可以通过以下条件实现:

如果字符串不以逗号结尾,请截断字符串,直到它以逗号结尾。

如何在sql脚本中翻译这种情况?

请注意,我是创建存储过程的新手。

1 个答案:

答案 0 :(得分:0)

一个长选项是when语句。它会看第11个字符,如果是逗号,我们需要精确的前10位数字,如果不是,我们将看第10位,如果是逗号,我们将得到前9个数字,如果不是,我们看第9位,得到前8位,依此类推...

如果组成字符串的数字始终小于或等于一定长度,则可以缩短此检查时间,但这会逐一检查每个

case when right(left(list_of_numbers,11),1)=','
    then left(list_of_numbers,11)
when right(left(list_of_numbers,10),1)=','
    then left(list_of_numbers,10)
when right(left(list_of_numbers,9),1)=','
    then left(list_of_numbers,9)
when right(left(list_of_numbers,8),1)=','
    then left(list_of_numbers,8)
when right(left(list_of_numbers,7),1)=','
    then left(list_of_numbers,7)
when right(left(list_of_numbers,6),1)=','
    then left(list_of_numbers,6)
when right(left(list_of_numbers,5),1)=','
    then left(list_of_numbers,5)
when right(left(list_of_numbers,4),1)=','
    then left(list_of_numbers,4)
when right(left(list_of_numbers,3),1)=','
    then left(list_of_numbers,3)
when right(left(list_of_numbers,2),1)=','
    then left(list_of_numbers,2)
else left(list_of_numbers,1) end as result

否则,假设字符串以一个数字开头。