Boa tarde,
Tenho alguns campos numéricos q ao fazer uma select gostaria q retornasse uma legenda
exemplo:
Status: 0=Inativo / 1=Ativo
Condição: 1=Funcionando / 2=Em manutenção / 3=Manutenção Interna
Seria algo assim, tenho varias tabelas com estes campos... mas tenho q ficar usando replace.
Existe uma forma de criar uma função para isso? Nem q na função eu tenha que setar nome do campo, ficando assim:
Legenda('Status',cadastro.status)
Tenho um campo de descrição no meu sistema... nesse campo preciso fazer um replace de alguns "substrings" que podem existir.
Exemplos:
<apelido>apelido</apelido>
<saudacao>saudacao</saudacao>
Usando CASE e REPLACE para tratar essas substrings aí de cima, funciona para um caso ou para o outro, não ambos.
Vejam como estou aplicando o SQL.
...
, CASE
WHEN MWA.descMsg LIKE '%'+'<saudacao>saudacao</saudacao>'+'%' Then
REPLACE(MWA.descMsg, '<saudacao>saudacao</saudacao>', dbo.saudacao(GETDATE()))
WHEN MWA.descMsg LIKE '%'+'<apelido>apelido</apelido>'+'%' Then
REPLACE(MWA.descMsg, '<apelido>apelido</apelido>', '[Apelido]')
ELSE MWA.descMsg
END AS msg
...
Preciso fazer com que esse tratamento seja aplicado para todas as situações, não apenas para uma das duas situações.
O lance é que não tenho como colocar o campo tratado numa variável e ir aplicando o tratamento a ela de forma isolada.
Estou iniciando em PHP, então talvez isso seja uma pergunta burra. Estou utilizando uma plataforma que fornece um array de categorias como digitado abaixo, e minha ideia é fazer uma busca no conteúdo por essas categorias, e substituir elas por outro array, que no caso terá as mesmas categorias, no entanto, com links. Veja:
$conteudo = "Meu conteúdo Filmes Laranja e Verde. Blackout.";
$from = array(
0 => "Laranja",
1 => "Azul",
2 => "Vermelho",
3 => "Verde",
4 => "Black"
);
$to = array(
0 => "<a href='#laranja'>Laranja</a>",
1 => "<a href='#azul'>Azul</a>",
2 => "<a href='#vermelho'>Vermelho</a>",
3 => "<a href='#verde'>Verde</a>",
4 => "<a href='#ver'>Black</a>"
);
$novoconteudo = strtr($conteudo, array_combine($from, $to));
echo $novoconteudo;
O máximo que conseguir fazer foi usando strtr, no entanto acaba fazendo algumas substituições "burras", como por exemplo adicionar link em "Black" quando na verdade a palavra é "Blackout". Acredito que para resolver isso, deveria ser feito com preg_replace, porém já tentei e não consegui. Alguém pode me ajudar?
Pessoal, to apanhando para criar uma function para remover a última vírgula que aparece na string chamada beneficios.
Estava tentando isso:
...
REVERSE(STUFF(REVERSE(
----------------------------------
CASE WHEN valeTransporte = '1' Then 'Vale-transporte,'
ELSE ''
END
+
CASE WHEN valeRefeicao = '1' Then 'Vale-refeição,'
ELSE ''
END
+
CASE WHEN seguroDeVida = '1' Then 'Seguro de vida,'
ELSE ''
END
----------------------------------
), 1, 1, '')) AS 'beneficios'
...
O problema é que nem sempre haverá string para ser tratada, aí o campo aparece como NULL e gera problema na hora de gerar um JSON pela aplicação.
Preciso de uma function que previna a situação de não haver string, e retorne valor vazio (não NULL).
Sou iniciante em SQL, em uma tabela do nosso BD tempos um campo que possui o registro com as informações do paciente concatenado com uma serie de valores que não precisamos.
Como eu faço, para montar uma select para extrair desse registro apenas o que está entre aspas?
O meu registro está assim:
a:28:{i:18;s:13:"Sérgio silva";i:19;s:11:"1199900001";i:20;s:0:"n/i";i:21;s:0:"n/i";i:23;s:15:"Amil One Health";i:24;s:0:"n/i";i:27;s:0:"n/i";i:31;s:1:"2";i:32;s:0:"n/i";i:33;s:1:"2";i:34;s:0:;}
Eu preciso dele assim:
"Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
Observação, esses monte de valores a:28: ...etc... eles mudam, não são valores fixos, se fossem até usaria o replace, mas são vários valores.
Depois que eu chegar nessa mineração: "Sérgio silva";"1199900001";"n/i";"n/i";"Amil One Health";"n/i";"n/i";"2";"n/i";"2";
Como eu faço para alocar cada valor em campo campo qualquer, pode ser uma tabela temporária, tipo assim: