03 DUVIDAS DE MONTAR SQL

WEBIER 21/06/2011 18:24:47
#377451
seguindo o padrão do UPGRADE no SQL

execSQL [Ô]UPDATE PARCELAS SET FORMA_PGTO = [ô]DINHEIRO[ô] WHERE FORMA_PGTO is NULL[Ô]
:

gostaria de montar 3 sql separadas...

1a. SQL:
-tenho uma tabela (PRODUTOS).... onde possui os campos DESCRICAO e TAMANHO...
no campo DESCRICAO tenho varios registros mais ou menos nesse estilo [Ô]CAMISA POLO TAM=P[Ô] ou [Ô]SHORT TEC TAM=42[Ô] e o campo TAMANHO está vazio... ambos os campos são do tipo TEXTO.

então gostaria de uma SQL que pegasse os 02 caracteres que vem depois de [Ô]TAM=[Ô] e colocasse no campo TAMANHO.

Ficaria assim:

[txt-color=#e80000]antes:[/txt-color]

DESCRICAO TAMANHO
CAMISA POLO TAM=P vazio
SHORT TEC TAM=42 vazio

[txt-color=#e80000]depois:[/txt-color]

DESCRICAO TAMANHO

CAMISA POLO TAM=P P
SHORT TEC TAM=42 42

====================================================================

2a. SQL:

Gostaria de uma outra sql que alterasse o texto que tá no campo DESCRICAO... a alteração seria remover o texto [Ô]TAM=[Ô] e o caracter q vinher depois... que pode ser 1 ou 2 caracteres

entao ficaria assim

[txt-color=#e80000]antes: depois:[/txt-color]
CAMISA POLO TAM=P CAMISA POLO
SHORT TEC TAM=42 SHORT TEC

===========================================================
3a. SQL:

Seria a mais facil das SQL... seria somente para remover todos os espaços em branco apos o texto no campo DESCRICAO.

Exemplo:

DESCRICAO
CAMISA POLO[txt-color=#e80000][espaço][/txt-color]
SHORT TEC[txt-color=#e80000][espaço][espaço][/txt-color]

esse espaço depois iria ser removido.
FFCOUTO 21/06/2011 18:46:17
#377452
Resposta escolhida
Você pode realizar tudo numa única SQL

execSQL [Ô]UPDATE produtos SET tamanho = SUBSTRING(descricao, CHARINDEX([ô]=[ô], descricao)+1, 3), descricao = SUBSTRING(descricao, 1, CHARINDEX([ô] TAM=[ô], descricao) -1) WHERE (tamanho = [ô][ô]) OR (tamanho IS NULL)


CHARINDEX = função InStr
SUBSTRING = função Mid

Observe que foi usado o tamanho 3 para recuperar o tamanho dos caracteres após o sinal de =.

Teste antes de executar na base de produção
Tópico encerrado , respostas não são mais permitidas