Sql 如何在两个不同的列中存储小数点前后的值

Sql 如何在两个不同的列中存储小数点前后的值,sql,database,mysql-workbench,sql-query-store,Sql,Database,Mysql Workbench,Sql Query Store,我想将金额列分为两部分,其中一列包含小数点前的值(即20.56=20),第二列包含小数点后的值(即20.56=56).您可以使用格式获取数字:: Name Gender Amount Ram male 20.56 Bhavna female 78.2 darshan male 12.02 Avni female 50.366 用法:格式(N,D) 您可以查看如何使用它:您可以使用此查询获得预期的输出,如 金额为:20.56 要将“20”作为输出,我们可以使用此查

我想将金额列分为两部分,其中一列包含小数点前的值(即20.56=20),第二列包含小数点后的值(即20.56=56).

您可以使用
格式获取数字:

Name    Gender  Amount
Ram male    20.56
Bhavna  female  78.2
darshan male    12.02
Avni    female  50.366
用法:
格式(N,D)


您可以查看如何使用它:

您可以使用此查询获得预期的输出,如

金额为:20.56

要将“20”作为输出,我们可以使用此查询

FORMAT(your_number,xxxxx) --you can choose xxxxx whatever you want
SELECT FLOOR(20.56) FROM TABLE_NAME
&要获得精确的“56”作为输出,我们可以使用此查询

FORMAT(your_number,xxxxx) --you can choose xxxxx whatever you want
SELECT FLOOR(20.56) FROM TABLE_NAME
--检查此查询

SELECT FLOOR((20.56 - FLOOR(20.56))*100) FROM TABLE_NAME

如果要将它们分别列在不同的列中,可以使用算术函数:

select amount, decode (pos,0,amount,substr(amount,1,pos-1)) as before_decimal , 
       decode(pos,0,0,substr(amount,pos+1,length(amount))) as after_decimal 
  from (
         select instr((substr(amount,1,length(amount))),'.') as pos,amount 
         from  table_name
       )

不要。别这样。存储数字,并让您的查询区分数字的整数部分和小数部分。使用楼层功能。但正如@paulsm4所说,不要这样做。如果确实不想在查询中定义视图,请创建视图。