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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Filtro su stringa con spazi iniziali (Oracle)
lunedì 05 gennaio 2009 - 00.25
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
pigi78
Profilo
| Newbie
17
messaggi | Data Invio:
lun 5 gen 2009 - 00:25
Salve.
Ho una tabella il cui campo chiave è di tipo "CHAR(10)".
Una delle chiavi ha il valore ' 1801', ovvero 6 spazi seguiti da 1801.
Eseguendo la seguente query da sql-plus tutto va bene:
SELECT id FROM tabella WHERE id = ' 1801'
Se però provo ad accederci mediante C# usando i parametri, questa non funziona.
In altre parole ho la query:
SELECT id FROM tabella WHERE id = :id
e poi valorizzo il parametro ID col valore ' 1801', però non vengono estratte righe dal database.
Se inserisco nel database un id pari a '1801 ' (ovvero sposto gli spazi in fondo), la query fatta da C# mi restituisce questo articolo. Pertanto suppongo che il problema sia che i parametri con gli spazi iniziali hanno dei problemi.
Qualcuno sa come posso risolvere il problema?
Grazie!
PS: Ho postato qui perchè è un problema di accesso ai dati, anche se non è un errore di Oracle (almeno credo. In fondo se il problema è nel connettore, visto che è fornito da Oracle non posso dire che è colpa del .NET :-D)
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
lun 5 gen 2009 - 03:12
>Salve.
Ciao!
>Se però provo ad accederci mediante C# usando i parametri, questa
>non funziona. In altre parole ho la query:
>
>SELECT id FROM tabella WHERE id = :id
>
>e poi valorizzo il parametro ID col valore ' 1801', però non vengono estratte righe dal database.
>Qualcuno sa come posso risolvere il problema?
Potresti postare il codice o dirci il metodo che usi per fare la query e come passi i valori? Senza quello è dura capire il problema.
Se si comporta come sql server, è molto probabile che ci sia un errore nel codice.. perchè il parametro non viene trimmato se passi gli spazi, ovunque essi siano (inizio o fine).
Gli spazi sono sempre caratteri e credo che Oracle non dia alcun problema. E' più probabile che ci sia qualcosa di strano nel codice.
>Grazie!
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
lun 5 gen 2009 - 10:52
>Ho una tabella il cui campo chiave è di tipo "CHAR(10)".
>Una delle chiavi ha il valore ' 1801', ovvero 6 spazi seguiti
>da 1801.
>
>Eseguendo la seguente query da sql-plus tutto va bene:
>
>SELECT id FROM tabella WHERE id = ' 1801'
Perché utilizzi il data type CHAR (stringhe a lunghezza fissa) per memorizzare valori numerici?
Non sarebbe più indicato un INTEGER (o un NUMBER con precision e scale in base alle tue esigenze)?
Nel caso debba memorizzare sia stringhe che numeri di lunghezza variabile, hai valutato il data type VARCHAR2?
>Grazie!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
pigi78
Profilo
| Newbie
17
messaggi | Data Invio:
mar 6 gen 2009 - 21:50
Grazie ad entrambi per l' aiuto!
Per fortuna sono riuscito a trovare il problema.
Specifico che sto lavorando con i Data Access Application Block, quindi non uso direttamente i driver di Oracle.
Però, nel fare un esempio con Oracle (prima di postare il problema), avevo usato il DbType.Varchar, anzichè DbType.Char... Quindi forse è il Varchar che mi toglie gli spazi iniziali.
Lo stesso errore lo avevo fatto con gli Application Block: anzichè usare il tipo "StringFixedLength" usavo il tipo "String"...
Ora funziona tutto.
Grazie comunque (mi sono accordo del problema quando ho fatto il copia/incolla del codice per postarlo sul forum!)
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 !