2013-01-10 8 views
5

Ho una visione:Errore che converte il tipo di dati nvarchar a numerico in vista

SELECT 
u.display_name AS usuario, 
g.parent_name AS grupo, 
pr.pkey, 
REPLACE(
    CONVERT (VARCHAR, ji.CREATED, 111), 
    '/', 
    '-' 
) AS fecha, 
CAST (ji.issuetype AS INT) AS issuetype, 
a.customvalue AS aplicativo, 
m.customvalue AS modulo 
FROM 
jiraissue AS ji 
JOIN project pr ON pr.ID = ji.PROJECT 
JOIN (
SELECT 
    ms.* 
FROM 
    cwd_membership ms 
INNER JOIN cwd_group gp ON (
    gp.ID = ms.parent_id 
    AND group_name IN (
     'Grupo QA 1', 
     'Grupo QA 2', 
     'Grupo QA 3', 
     'BH Seguros Homo' 
    ) 
) 
) g ON g.lower_child_name = ji.REPORTER 
JOIN cwd_user u ON g.lower_child_name = u.user_name 
JOIN (
SELECT 
    ISSUE, 
    customvalue 
FROM 
    customfieldvalue v 
INNER JOIN customfield f ON (
    f.ID = v.customfield 
    AND f.cfname = 'Aplicativo' 
) 
INNER JOIN customfieldoption o ON (o.ID = v.STRINGVALUE) 
) a ON (a.ISSUE = ji.ID) 
JOIN (
SELECT 
    ISSUE, 
    customvalue 
FROM 
    customfieldvalue v 
INNER JOIN customfield f ON (
    f.ID = v.customfield 
    AND f.cfname = 'Módulo' 
) 
INNER JOIN customfieldoption o ON (o.ID = v.STRINGVALUE) 
) m ON (m.ISSUE = ji.ID) 
WHERE 
ji.issuetype IN (9, 11, 12, 13, 14, 15) 
GROUP BY 
ji.issuetype, 
pr.pkey, 
g.parent_name, 
u.display_name, 
REPLACE(
    CONVERT (VARCHAR, ji.CREATED, 111), 
    '/', 
    '-' 
), 
a.customvalue, 
m.customvalue 

E questo mi dà qualcosa di simile:

usuario    grupo  pkey  fecha  issuetype aplicativo 
---------------------------------------------------------------------------------- 
Ricardo A. Casares Grupo QA 1 GD123 2012-11-23 12 Act-creditos-scheduler ABM_Suc-backend 

E poi, quando si tenta di interrogare questo punto di vista, diciamo che una semplice query:

SELECT * FROM view 
WHERE pkey LIKE '%GD123%' 

In alcune colonne che sto ricevendo "Errore che converte il tipo di dati nvarchar in numerico" Ma in alcune altre colonne, come "aplicativo" sta funzionando bene.

Perché sta succedendo?

+0

Quando si verifica l'errore, quando si esegue la query sopra riportata su pkey? In caso contrario, quale query restituisce quell'errore? – sgeddes

+1

Che tipo di 'jiraissue.issuetype'? –

+0

@ user1073631 sì su pkey – ricardocasares

risposta

6

Il problema è con questo incarico :

o.ID = v.STRINGVALUE 

si prega di correggere e risolverà il problema. Un modo possibile per correggere il problema è utilizzare ISNUMERIC, ad es.

o.ID = CASE WHEN ISNUMERIC(v.STRINGVALUE) = 1 THEN v.STRINGVALUE ELSE -1 END 

(in altro modo si può utilizzare un altro numero che è garantito per non unirsi con la tabella 'o', cioè è possibile utilizzare 0)

+0

afferma di non avere problemi nel lanciare la colonna 'ji.issuetype' – Blachshma

+0

quindi, deve essere o.ID = v.STRINGVALUE è un colpevole – cha

+1

oppure, potrebbe essere questo: ji.issuetype IN (9, 11 , 12, 13, 14, 15). Puoi commentare questa riga e ripetere il test? – cha

3

Questo errore indica che si dispone di una colonna di tipo nvarchar e si sta tentando di effettuare una conversione su un valore numerico (int, ad esempio).
MA almeno in una delle righe restituite, tale valore non può essere convertito in un valore numerico.

Ad esempio, provare a convertire "abcd" in un valore numerico genererà quell'errore.

Nella query da Lei forniti probabilmente è sulla linea: CAST (ji.issuetype AS INT) AS issuetype

Verificare se uno qualsiasi dei dati in ji.issuetype non è un represention stringa di un numero ...

+0

Mmm, in realtà tutte le righe da jiraissue.issuetype sono la rappresentazione in stringa di un numero. – ricardocasares

+0

sì, nessun errore! L'OP – ricardocasares

1

Un'altra cosa che si può provare è quella di utilizzare ARITHABORT per raccontare SQL con solo valori NULL non espressi.

Ad esempio, utilizzando SET ARITHABORT OFF & SET ANSI_WARNINGS OFF prima di selezionare dal punto di vista dovrebbe NULL i valori che non riesce a lanciare (invece di buttare eccezioni) - è possibile vedere ciò che le righe (e di conseguenza quali valori) si stanno dando dolore.

Problemi correlati