问题描述
我想使用SAP HANA中的where子句提取字符串。例如,名称列有3个字符串。
class profile::software::apache (
$PHP_version = '7.4',$PHP_remove = ['7.0‘,‘7.3'],#...
) {
# build a hash of PHP Versions with a value of either present or absent
# and iterate over it with each
$PHPInstallHash = { $PHP_version => 'present' }
#notify { "Value of PHPRemove: ${PHP_remove}": }
if $PHP_remove {
# We have the array,use the map function to build remove hash
$PHPRemoveHash = $PHP_remove.map |$version| {
{ $version => 'absent' }
}
$PHPFullHash = $PHPInstallHash + $PHPRemoveHash
} else {
$PHPFullHash = $PHPInstallHash
}
#notify { "PHPHash to iterate over to install/uninstall: ${PHPFullHash}": }
#iterate over the result installing/uninstalling
$PHPFullHash.each | $PHP_version,$ensure_value | {
ensure_packages([
"PHP$PHP_version-xml","PHP$PHP_version-zip","PHP$PHP_version-curl","PHP$PHP_version-mbstring","libapache2-mod-PHP$PHP_version",],{
'ensure' => $ensure_value,require => [Class['apt::update'],Apt::Source['source_PHP_sury'],notify => Class['apache::service'],}
)
}
}
使用where子句过滤名称列后,名称列中的输出将仅显示字符串的最后一部分。因此,输出将是这样。这意味着我们拥有的一切,只需从头开始删除至“ /”即可。
“ MasterData_Holdings” “审计与证券” “总帐”
解决方法
您可以尝试使用REPLACE_REGEXPR
我对Hana不熟悉,但是该功能非常简单,应该是:
select REPLACE_REGEXPR('.+/(.+)' IN fieldName WITH '\1' OCCURRENCE ALL) as field
...
where
... -- your filter
请注意,此正则表达式'.+/(.+)'
会吃掉所有内容,直到最后一个/
,例如,如果您有....checks/MasterData_Holdings/Something
,它将仅返回Something