我有一个表,其中的列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脚本中翻译这种情况?
请注意,我是创建存储过程的新手。
答案 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
否则,假设字符串以一个数字开头。