将VARCHAR转换为货币非常新。我在这里需要指导。
请问这是如何投资货币的,因为我在这里显然有些混乱。
查询看起来像这样
select credit, debit, balance , 'GBP' + CONVERT (varchar 50) cast (credit as money),1, (debit as money),1, (balance as money),1 as [debit], [credit], [balance] from transactions
修改
如果要求,我会粘贴ma表格列以供您查看
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_PRECISION_RADIX NUMERIC_SCALE DATETIME_PRECISION CHARACTER_SET_CATALOG CHARACTER_SET_SCHEMA CHARACTER_SET_NAME COLLATION_CATALOG COLLATION_SCHEMA COLLATION_NAME DOMAIN_CATALOG DOMAIN_SCHEMA DOMAIN_NAME
banksql dbo transactions id 1 NULL NO int NULL NULL 10 10 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
banksql dbo transactions depositor_name 2 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions accountNo1 3 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions telephone 4 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions transaction_desc 5 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions credit 6 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions debit 7 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions balance 8 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
banksql dbo transactions transaction_date 9 NULL YES varchar 50 50 NULL NULL NULL NULL NULL NULL iso_1 NULL NULL SQL_Latin1_General_CP1_CI_AS NULL NULL NULL
答案 0 :(得分:0)
你已经被告知将数值存储为字符串的错误想法......所以我不会谈论这个。关于类型转换的一些提示:
这部分代码没有任何意义:
'GBP' + CONVERT (varchar 50) cast (credit as money),1, (debit as money),1, (balance as money),1 as [debit]
您可以使用CAST()
或CONVERT()
SELECT CAST('123' AS INT)
返回数字 123 SELECT CONVERT(INT, '123')
完全相同从SQL Server 2012+版本开始,TRY_CAST()
和TRY_CONVERT()
可以更好地处理无效值。
CAST()
将使用隐式类型转换,而CONVERT()
允许第三个参数指定转换模式。 Find the details here 您可以尝试这样的事情:
SELECT 'GBP' + credit AS ConcatenatedString --as your "credit" is a string type already...
,CAST(credit AS MONEY) AS CastedString --numeric return
FROM transactions