Hi @pnowojski , thanks for your reply. There are many cases need this feature. 
Not only `case when`, but also `nvl`, `greatest` and `least`.  Most users 
encounter the blank problem is `case when`. Examples have been added in the 
test cases. Below I will add some more examples:
1. 
```
SELECT country_name
FROM (
        SELECT CASE id
                        WHEN 1 THEN 'GERMANY'
                        WHEN 2 THEN 'CANADA'
                        ELSE 'INVALID COUNTRY ID'
                END AS country_name
        FROM country_id
)
WHERE country_name = 'GERMANY'
```
This sql will output nothing since the blank problem. It is very confused.

2. 
```
SELECT country_name, country_info 
FROM (
        SELECT CASE id
                        WHEN 1 THEN 'GERMANY'
                        WHEN 2 THEN 'CANADA'
                        ELSE 'INVALID COUNTRY ID'
                END AS country_name
        FROM country_id
) nameTable join infoTable on nameTable.country_name = infoTable.country_name;
```
This sql cannot join correctly since the blank problem. 'GERMANY' in nameTable 
becomes 'GERMANY-----------'.  BTW, '-' means the blank.

It is true the sql standard returns CHAR type, but nearly all major DBMSs 
return VARCHAR without blank-padded.

Thanks, Hequn


[ Full content available at: https://github.com/apache/flink/pull/6519 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to