Mysql 如何将列设置为空安全?
这是我的密码:Mysql 如何将列设置为空安全?,mysql,sql,Mysql,Sql,这是我的密码: SELECT COALESCE(CONCAT(u.user_fname, ' ', u.user_lname), 'unknown') name FROM users u WHERE id = 10; 当user_fname或user_lname为null时,结果将未知。这不是我想要的,我只想在user_fname和user_lname都为null时选择unknown 否则,我想获取NOTNULL列的值。我怎样才能做到这一点?您可以使用: SELECT COALESCE(
SELECT COALESCE(CONCAT(u.user_fname, ' ', u.user_lname), 'unknown') name
FROM users u
WHERE id = 10;
当user_fname或user_lname为null时,结果将未知。这不是我想要的,我只想在user_fname和user_lname都为null时选择unknown
否则,我想获取NOTNULL列的值。我怎样才能做到这一点?您可以使用:
SELECT COALESCE(
TRIM(CONCAT(COALESCE(u.user_fname,''), ' ', COALESCE(u.user_lname,''))),
'unknown') name
FROM users u
WHERE id = 10;
您可以使用:
SELECT COALESCE(
TRIM(CONCAT(COALESCE(u.user_fname,''), ' ', COALESCE(u.user_lname,''))),
'unknown') name
FROM users u
WHERE id = 10;
使用concat_ws:
这样做的好处是,如果两个名称中的任何一个都为null,那么结果中就不会出现虚假的空格
如果要将空值转换为未知值,则会有点棘手。这应该可以做到:
SELECT COALESCE(NULLIF(CONCAT_WS(' ', u.user_fname, u.user_lname) , ''), 'unknown') as name
FROM users u
WHERE id = 10;
使用concat_ws:
这样做的好处是,如果两个名称中的任何一个都为null,那么结果中就不会出现虚假的空格
如果要将空值转换为未知值,则会有点棘手。这应该可以做到:
SELECT COALESCE(NULLIF(CONCAT_WS(' ', u.user_fname, u.user_lname) , ''), 'unknown') as name
FROM users u
WHERE id = 10;
我总是喜欢sql server中的isnull函数或oracle中的nvl:
SELECT isnull(u.user_fname + ' ','') + isnull(u.user_lname, '') name
FROM users u
WHERE id=10
但要切换包含空值,我将使用一个案例:
SELECT
CASE WHEN u.user_fname IS NULL AND u.user_lname is NULL THEN 'unknown'
ELSE isnull(u.user_fname + ' ','') + isnull(u.user_lname, '') END name
FROM users u
WHERE id=10
是的,它比其他答案长一点,但更容易阅读,将来如果你有其他情况,可能会更灵活
这两种方法对性能的影响都不大,所以这取决于个人喜好。我一直喜欢sql server中的isnull函数或oracle中的nvl:
SELECT isnull(u.user_fname + ' ','') + isnull(u.user_lname, '') name
FROM users u
WHERE id=10
但要切换包含空值,我将使用一个案例:
SELECT
CASE WHEN u.user_fname IS NULL AND u.user_lname is NULL THEN 'unknown'
ELSE isnull(u.user_fname + ' ','') + isnull(u.user_lname, '') END name
FROM users u
WHERE id=10
是的,它比其他答案长一点,但更容易阅读,将来如果你有其他情况,可能会更灵活
无论哪种方式,都不是真正的演出成功,所以这取决于个人喜好。非常感谢。非常感谢。@PaulX。标准函数是COALESCE,基本上在所有数据库中都可以使用。@PaulX。标准函数是COALESCE,基本上在所有数据库中都可用。