Tenho os seguintes dados na minha tabela "dispositivos"
affiliate_name affiliate_location model ip os_type os_version
cs1 inter Dell 10.125.103.25 Linux Fedora
cs2 inter Dell 10.125.103.26 Linux Fedora
cs3 inter Dell 10.125.103.27 NULL NULL
cs4 inter Dell 10.125.103.28 NULL NULL
Eu executei a consulta abaixo
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
Retorna o resultado dado abaixo
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
Como sair disso para que ele ignore NULL E o resultado seja
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
cs3-Dell-10.125.103.27-
cs4-Dell-10.125.103.28-
COALESCE
função faz: ela retorna o primeiroNULL
parâmetro sem valor passado a ela (ouNULL
se todos os parâmetros estiveremNULL
). Ao passar uma string vazia como o segundo parâmetro, você garante que ela não retornaráNULL
.Use CONCAT_WS :
fonte
Para ter a mesma flexibilidade em CONCAT_WS e em CONCAT (se você não quiser o mesmo separador entre todos os membros, por exemplo), use o seguinte:
fonte
fonte
CONCAT_WS
ainda produz nulo para mim se o primeiro campo for nulo. Eu resolvi isso adicionando uma string de comprimento zero no início, como emContudo
produz Nulo quando o primeiro campo é Nulo.
fonte
CONCAT_WS("-", affiliate_name, model, ip, os_type, os_version)
você pode usar se declaração como abaixo
fonte