Erreur lors de la conversion de type de données nvarchar numérique en vue
J'ai une vision:
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
Et cela me donne quelque chose comme ceci:
usuario grupo pkey fecha issuetype aplicativo
----------------------------------------------------------------------------------
Ricardo A. Casares Grupo QA 1 GD123 2012-11-23 12 Act-creditos-scheduler ABM_Suc-backend
Et puis, quand j'essaie d'interroger ce point de vue, disons, d'une requête simple:
SELECT * FROM view
WHERE pkey LIKE '%GD123%'
Dans certaines colonnes, j'obtiens "Erreur lors de la conversion de type de données nvarchar numérique"
Mais dans d'autres colonnes, comme "aplicativo" il travaille très bien.
Pourquoi est-ce arrivé?
- Quand êtes-vous d'obtenir l'erreur, lorsque vous exécutez la requête ci-dessus à l'encontre de pkey? Sinon, la requête est de retour cette erreur?
- Ce type de
jiraissue.issuetype
? - oui sur pkey
- jiraissue.issuetype est de type nvarchar
- Êtes-vous sûr, toutes les données de
issuetype
sont convertibles àint
? - Je suis assez sûr qu'il peut être converti, sinon, peut-être cela la cause de l'erreur?
- Eh oui, si vous exécutez SELECT CAST (ji.issuetype COMME INT) COMME issuetype DE jiraissue et de recevoir le même message d'erreur, alors c'est votre problème. Voir la réponse posté par @Blachshma.
- en fait la requête que vous suggérez fonctionne très bien.
- Vous avez dit "Dans certaines colonnes, j'obtiens "Erreur lors de la conversion de type de données nvarchar numérique", Mais dans d'autres colonnes, comme "aplicativo" il travaille très bien." - Qu'entendez-vous par "certaines colonnes"? Les colonnes??
- Par exemple, dans grupo et aplicativo fonctionne très bien, mais pour tout le reste échoue.
- Pouvez-vous nous montrer une capture d'écran avec un exemple? Vous dites que
usuario
par exemple montre aussi que l'erreur à l'intérieur de la suite de la colonne? - C'est assez bizarre, comme vous pouvez le voir, modulo et aplicativo colonnes sont construits un peu de la même façon.
- Quelques captures d'écran snag.gy/rtZRs.jpg snag.gy/2iVA8.jpg snag.gy/CmM6B.jpg
- la définition est la première sql dans ma question, je ne suis pas sûr si c'est ce que vous demandez
Vous devez vous connecter pour publier un commentaire.
Le problème avec cet exercice:
veuillez la corriger et il permettra de résoudre le problème. Une façon possible de corriger le problème est d'utiliser ISNUMERIC, par exemple
(dans l'AUTRE, vous pouvez utiliser un autre numéro qui est garanti de ne pas se joindre à la table 'o', c'est à dire que vous pouvez utiliser 0)
ji.issuetype
colonneCette erreur signifie que vous avez une colonne qui est de type
nvarchar
et que vous essayez de faire une conversion d'une valeur numérique (de type int, par exemple).MAIS dans au moins sur des lignes retournées, cette valeur ne peut pas être convertisseur numérique.
Par exemple - en essayant de convertir les "abcd" numérique soulève d'erreur.
Dans la requête que vous avez fourni, il est probablement sur la ligne:
CAST (ji.issuetype AS INT) AS issuetype
Vérifier si l'une des données dans
ji.issuetype
n'est pas une chaîne représentation d'un nombre...Une autre chose que vous pouvez faire est d'essayer d'utiliser
ARITHABORT
dire à SQL simplement les valeurs NULL elle ne peut pas exprimés.Par exemple, à l'aide de
SET ARITHABORT OFF
&SET ANSI_WARNINGS OFF
avant de sélectionner à partir de la vue devrait NULLES les valeurs qu'il ne parvient pas à cast (au lieu de lancer des exceptions) - vous pouvez ensuite voir ce que les lignes (et en ce que les valeurs) sont en vous donnant le chagrin.