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

以下は、uに望ましい結果を与えるクエリです。

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 に答える