1

我正在运行以下查询:

SELECT
    SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21) AS CVSS_Base_Score_Text,
    CONVERT(SUBSTRING_INDEX(SUBSTRING(pluginText,
        LOCATE('cvss', pluginText), 21),' : ',-1),UNSIGNED INTEGER)
    AS CVSS_Base_Score_Number
FROM vulnerabilities_internal
WHERE LCASE(pluginText) REGEXP '.*cvss.*'

它返回 2 列

CVSS_Base_Score_Text         CVSS_Base_Score Number
CVSS Base Score: 4.3         4

如何修改此查询,使 CVSS_Base_Score_Number 列中的数字带入小数点并显示为 4.3 ?

回答了我自己的问题:

SELECT
SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21) AS CVSS_Base_Score_Text,
CONVERT(SUBSTRING_INDEX(SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21),' : ',  
-1), 
DECIMAL(10,1)) AS CVSS_Base_Score_Number
FROM vulnerabilities_internal
4

2 回答 2

1

下面是查询,它会给你想要的结果。

SELECT
    SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21) AS CVSS_Base_Score_Text,
    CAST(SUBSTRING_INDEX(SUBSTRING(pluginText,
        LOCATE('cvss', pluginText), 21),' : ',-1) as decimal(2,1))
    AS CVSS_Base_Score_Number
FROM vulnerabilities_internal
WHERE LCASE(pluginText) REGEXP '.*cvss.*'
于 2012-05-24T20:26:56.650 回答
0
SELECT 
SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21) AS CVSS_Base_Score_Text, 
CONVERT(SUBSTRING_INDEX(SUBSTRING(pluginText,LOCATE('cvss', pluginText), 21),' : ',   
-1),  
DECIMAL(10,1)) AS CVSS_Base_Score_Number 
FROM vulnerabilities_internal 
于 2012-07-11T00:20:36.103 回答