我需要将具有如下所示值的NVARCHAR(MAX)
列转换为INTEGER
。
我正在尝试此无效的代码:
SELECT CONVERT(INT, CriteriaValue)
FROM OUTPUT_KEY
表具有以下值:
£19,000,000
£10,000,000
£10,000,000
我收到此错误:
第245级状态1的23行
将nvarchar值“£10,000,000”转换为数据类型int时,转换失败。
以下内容也不起作用
DECLARE @ConvertValue AS NVARCHAR(50)
SET @ConvertValue = '19,000,000'
SELECT CONVERT(INT, @ConvertValue)
错误:
第245层状态1的州际25行
将nvarchar值'19,000,000'转换为数据类型int时,转换失败。
答案 0 :(得分:1)
Based on sample data & query, you need REPLACE()
to make it work :
DECLARE @ConvertValue nvarchar(50)
SET @ConvertValue = '19,000,000'
SELECT CONVERT(INT, REPLACE(@ConvertValue, ',', ''))
If the @ConvertValue
has £
also , then you need one more REPLACE()
:
SELECT CONVERT(INT, REPLACE(REPLACE(@ConvertValue, '£', ''), ',', ''))
答案 1 :(得分:1)
您尝试转换为整数的值包含逗号和井号。因此,SQL Server无法为您处理隐式转换。
您可以在此处阅读所有内容:
在此特定示例中,您需要在转换之前删除这些字符。如果您只有磅和逗号,这是使用嵌套替换的示例:
DECLARE @ConvertValue AS NVARCHAR(50);
SET @ConvertValue = '£19,000,000';
SET @ConvertValue = REPLACE(REPLACE(@ConvertValue, ',', ''), '£', '');
SELECT @ConvertValue;
如果您得到的数据类型是金钱,则SQL会为您隐式处理转换:
DECLARE @ConvertValue AS NVARCHAR(50);
SET @ConvertValue = '£19,000,000';
SELECT CONVERT(MONEY, @ConvertValue);
答案 2 :(得分:0)
您可以尝试类似的操作:
<div id="mytopnav" class="topnav">
<div class="gradient-overlay></div>
<a class="navitem" href="#">About</a>
<a class="navitem" href="#">Packages</a>
<a class="navitem" href="#">Features</a>
<a class="navitem"href="#">Blog</a>
<a class="navitem"href="#" id="contact">Contact</a>
由此,您将获得如何在表集上应用品脱:
.gradient-overlay {
z-index: 2;
width: 100%;
background: linear-gradient(90deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 15%, rgba(0, 0, 0, 1) 85%, rgba(0, 0, 0, 0) 100%);
}
执行:
DECLARE @varchar nvarchar(max) = '£19,000,000';
WHILE PATINDEX('%[^0-9]%', @varchar) > 0
SET @varchar = REPLACE(@varchar, SUBSTRING(@varchar, PATINDEX('%[^0-9]%', @varchar), 1), '' )
SELECT [int] = CAST(@varchar as int)
答案 3 :(得分:0)
也许Money数据类型对您来说会更好
Declare @ConvertValue as nvarchar(50)
SET @ConvertValue = '$19,000,000'
SELECT convert (money, @ConvertValue)