Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Trova la corrispondenza di un valore nel db ignorando alcuni valori
venerdì 14 settembre 2012 - 16.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 3.5
|
SQL Server 2008 R2
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
ven 14 set 2012 - 16:12
Ciao ragazzi,
forse il titolo non è del tutto chiarissimo, quindi cerco di spiegarmi al meglio.
Nel database ho dei valori di questo tipo:
7MBP100RA-120
6MBP75RA-060
2SJ475-01
HS-PHB50V4B15
EEH02-4WR-USB-CDR3
Come vedete sono delle sigle con all'interno anche dei trattini che possono capitare in qualsiasi punto del valore, una o più volte.
Ho la necessità di avere la corrispondenza per questo valore anche se nel campo della ricerca viene inserito un valore senza trattino, ad esempio:
Se scrivo 2SJ47501 mi dovrà trovare-> 2SJ475-01
Se scrivo 7MBP100RA120 mi dovrà trovare-> 7MBP100RA-120
Avevo pensato che si poteva creare un altro campo nel db, "CodiceSenzaTrattino", che veniva riempito all'atto dell'inserimento del prodotto, però così vado a duplicare dei valori e devo fare molte modifiche.
Sapreste per caso indicarmi qualche altre soluzione?
Grazie mille!
dupperelko
Profilo
| Junior Member
74
messaggi | Data Invio:
sab 15 set 2012 - 15:09
Ciao,
che tipo di database è?
Sql server?
ciao
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
sab 15 set 2012 - 16:51
Ciao,
sì esatto è un 2008 r2.
Esiste qualche funzione implicita che si può richiamare nella SELECT?
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 15 set 2012 - 18:57
>Ciao,
>sì esatto è un 2008 r2.
Ciao
>Esiste qualche funzione implicita che si può richiamare nella SELECT?
Per fare quello che ti serve con una REPLACE(che_stringa, cosa, con_cosa) ti dovrebbe bastare.. solo che c'è un problema di fondo, che succede se ti trovi questi valori?
ABC-DEF
e
AB-CD-EF
in questo caso entrambi sono uguali a ABCDEF dopo la replace.. e rischi di sbagliare, non trovi?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
dupperelko
Profilo
| Junior Member
74
messaggi | Data Invio:
sab 15 set 2012 - 23:15
Se vuoi qualcosa di performante, devi lavorare con le ricerche full-text (SQL Server)... guarda qui:
http://msdn.microsoft.com/it-it/library/ms142571%28v=SQL.100%29.aspx
ciao
zseven
Profilo
| Senior Member
494
messaggi | Data Invio:
mer 17 ott 2012 - 12:41
Ciao scusare se riprendo solo ora ma con mille impegni non ho avuto un briciolo di tempo.
Dunque ho provato a fare come dici tu Alx, ma mi restituisce errore.
Ho una SelectCommand inline, poi code behind mi richiamo una filterexpressiona seconda dei casi, e nel caso mio è così:
SqlProdotti.FilterExpression = "Replace(nome_prodotto, '-', '') LIKE '%{0}%'"
L'errore è:
L'espressione contiene una chiamata di funzione indefinita: Replace()
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
ven 19 ott 2012 - 11:39
>SqlProdotti.FilterExpression = "Replace(nome_prodotto, '-', '') LIKE '%{0}%'"
>L'espressione contiene una chiamata di funzione indefinita: Replace()
non puoi scrivere T-SQL diretto dentro la FilterExpression.
Devi seguire la sintassi indicata qui:
http://msdn.microsoft.com/en-US/library/system.data.datacolumn.expression
(v=vs.100).aspx
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !