我使用CONCAT()函数连接几个字符串字段。这是代码:
CONCAT(a.[OrganizationalUnit], ' - ', a.[Level1], ' - ', a.[Level2], ' - ', a.[Level3], ' - ', a.[Level4], ' - ', a.[Level5], ' - ', a.[Level6], ' - ', a.[Level7], ' - ', a.[Level8], ' - ', a.[Level9], ' - ', a.[Level10], ' - ', a.[Level11], ' - ', a.[Level12], ' - ', a.[Level13], ' - ', a.[Level14]) AS Organization
有些字段为null。发生这种情况时,我会在输出中收到一系列破折号。当田地空白时,有没有办法摆脱那些?以下是输出示例:
公司123 - 国家 - LC BR - BR - RCL - 5510-RC BR(V) - EM - DG - - - - - - -
答案 0 :(得分:0)
使用if语句环绕你的字段:
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);
$results = $mysqli->query("Select UserID, LastName, FirstName, UserName, Phone from User where UserID=".$searchValue." ") or mysqli0;
if(!$results){
echo '<script>alert("not working"); </script>';
}"
答案 1 :(得分:0)
您还没有指定SQL Server版本,因此我假设SQL Server 2012或更高版本并使用SQL 2012或更新版本中提供的iif
(即时)。查看有关MSDN
下面的解决方案使用变量,只是为了显示一些可执行代码作为示例。您可以使用列名替换变量。
declare
@column1 varchar(10) = 'c1',
@column2 varchar(10) = null,
@column3 varchar(10) = 'c3',
@column4 varchar(10) = 'c4',
@column5 varchar(10) = null,
@column6 varchar(10) = null,
@columnN varchar(10) = null -- 'cN'
declare @concatenated varchar(100)
select @concatenated =
rtrim
(
concat
(
iif(@column1 is not null, concat(@column1, ' - '), ''),
iif(@column2 is not null, concat(@column2, ' - '), ''),
iif(@column3 is not null, concat(@column3, ' - '), ''),
iif(@column4 is not null, concat(@column4, ' - '), ''),
iif(@column5 is not null, concat(@column5, ' - '), ''),
iif(@column6 is not null, concat(@column6, ' - '), ''),
@columnN
)
)
select rtrim(left(@concatenated, len(@concatenated) - patindex('%[^-]%', reverse(@concatenated))+1)) as 'Result'
这会将结果返回为c1 - c3 - c4
第一个select
将值连接在一起。
第二个select
删除由结尾的空字段引起的任何尾随空格和短划线。
逻辑可以处理所有值为null,中间值为null,最后一个值为null,最后任何值为null的场景。
答案 2 :(得分:0)
将' - '+a.Leveln
嵌套在每个连续部分中。
Declare @YourTable table ([OrganizationalUnit] varchar(10),Level1 varchar(10),Level2 varchar(10),Level3 varchar(10),Level4 varchar(10),Level5 varchar(10),Level6 varchar(10),Level7 varchar(10),Level8 varchar(10),Level9 varchar(10),Level10 varchar(10),Level11 varchar(10),Level12 varchar(10),Level13 varchar(10),Level14 varchar(10),Level15 varchar(10))
Insert Into @YourTable (OrganizationalUnit,Level1,Level2) values ('Org Unit','LevelOne','LevelTwo')
Select CONCAT(a.[OrganizationalUnit], ' - '+a.[Level1], ' - '+ a.[Level2], ' - '+ a.[Level3], ' - '+ a.[Level4], ' - '+ a.[Level5], ' - '+ a.[Level6], ' - '+ a.[Level7], ' - '+ a.[Level8], ' - '+ a.[Level9], ' - '+ a.[Level10], ' - '+ a.[Level11], ' - '+ a.[Level12], ' - '+ a.[Level13], ' - '+ a.[Level14])
From @YourTable A
返回
Org Unit - LevelOne - LevelTwo