I have a table with two int columns and I try the following: in the SELECT
statement for the table, I will if one of this values is 0 that the column will be empty.
I have tried with this SQL but then I got 0
and not ''
:
SELECT
Typ
, Nummer
, IIF(ATBPos > 0 , ATBPos, '') AS ATBPos
, IIF(ATBStk > 0 , ATBStk, '') AS ATBStk
, ID
FROM
Vorpapier
WHERE
FremdID = 1
AND PosNummer = 1
Table Vorpapier
looks like this:
Nummer (varchar) | ATBPos (int) | ATbStk (int) | Typ (varchar)
-----------------+--------------+--------------+--------------
54542542542 | 0 | 0 | OHNE
45454 | 15 | 45 | ATB
And the result should look like this:
Nummer (varchar) | ATBPos (int) | ATbStk (int) | Typ (varchar)
-----------------+--------------+--------------+--------------
54542542542 | | | OHNE
45454 | 15 | 45 | ATB
Just use
iif( ATBPos = 0, null, ATBPos ) as ATBPos
and
iif( ATBStk = 0, null, ATBStk ) as ATBStk
you can cast to varchar.
SELECT
Typ
, Nummer
, IIF(ATBPos > 0 , cast(ATBPos as varchar), '') AS ATBPos
, IIF(ATBStk > 0 , cast(ATBStk as varchar), '') AS ATBStk
, ID
FROM
Vorpapier
WHERE
FremdID = 1
AND PosNummer = 1
Try this:-
SELECT
Typ
, Nummer
, (CASE WHEN ATBPos > 0 then ATBPos ELSE '' END) as ATBPos
, (CASE WHEN ATBStk > 0 then ATBStk ELSE '' END) as ATBStk
, ID
FROM
Vorpapier
WHERE
FremdID = 1
AND PosNummer = 1
OR you should change IIF to if in your sql query. Try also :-
SELECT
Typ
, Nummer
, IF(ATBPos > 0 , ATBPos, '') AS ATBPos
, IF(ATBStk > 0 , ATBStk, '') AS ATBStk
, ID
FROM
Vorpapier
WHERE
FremdID = 1
AND PosNummer = 1
In SQL, an expression returns a specific type. In this case, the type is a number, and ''
is not a number. So, it is converted to one, which is where the 0
comes from.
The solution is to use compatible types. I recommend using a case
expression ( case
is part of standard SQL). It looks like:
SELECT Typ, Nummer,
(CASE WHEN ATBPos > 0 THEN ATBPos END) AS ATBPos,
(CASE WHEN ATBStk > 0 THEN ATBStk END) AS ATBStk, ID
FROM Vorpapier
WHERE FremdID = 1 AND
PosNummer = 1;
Alternatively, if you really want a blank string rather than NULL
, then use type conversion:
SELECT Typ, Nummer,
(CASE WHEN ATBPos > 0 THEN CAST(ATBPos as VARCHAR(255)) ELSE '' END) AS ATBPos,
(CASE WHEN ATBStk > 0 THEN CAST(ATBStk as VARCHAR(255)) ELSE '' END) AS ATBStk, ID
FROM Vorpapier
WHERE FremdID = 1 AND
PosNummer = 1;
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.