mysql 数据类型 decimal_mysql decimal、numeric数据类型
时间: 2023-07-09 14:32:17 浏览: 190
MySQL中的DECIMAL和NUMERIC数据类型都用于存储精确的十进制数值。这两种类型的主要区别在于它们的存储需求和范围。
DECIMAL是一种浮点类型,用于存储精确的十进制数值。它可以存储从-10^38+1到10^38-1之间的任何数值,且精度可达到30位小数。DECIMAL类型的存储需求是固定的,取决于指定的精度和小数位数。
NUMERIC也是一种浮点类型,与DECIMAL相似,用于存储精确的十进制数值。它可以存储从-10^38+1到10^38-1之间的任何数值,且精度可达到30位小数。NUMERIC类型的存储需求也是固定的,取决于指定的精度和小数位数。
总的来说,DECIMAL和NUMERIC都是用于存储精确的十进制数值的数据类型,它们的主要区别在于存储需求和范围。在实际使用中,应根据具体的需求来选择使用哪种类型。
相关问题
def getJSONSchemaMysqlSource(optionArg: String, serverIdArg: String, args: Array[String]): MySqlSource[String] = { //ParameterTool是Flink提供的读取程序启动参数、配置文件、环境变量以及Flink自身配置参数等配置的的一个工具类 val parameterTool: ParameterTool = ParameterTool.fromArgs(args) val mysqlHostname: String = parameterTool.get("mysql-hostname", "hadoop-1") val mysqlPort = Integer.parseInt(parameterTool.get("mysql-port", "3306")) val mysqlUsername = parameterTool.get("mysql-username", "root") val mysqlPasswd = parameterTool.get("mysql-passwd", "root") val serverId = parameterTool.get("server-id", serverIdArg) val option = parameterTool.get("start-up-options", optionArg) // 创建配置信息 Map 集合,将 Decimal 数据类型的解析格式配置 k-v 置于其中 val config = new util.HashMap[String, Object]() config.put(JsonConverterConfig.DECIMAL_FORMAT_CONFIG, DecimalFormat.NUMERIC.name()) // 将前述 Map 集合中的配置信息传递给 JSON 解析 Schema,该 Schema 将用于 MysqlSource 的初始化 val jsonDebeziumDeserializationSchema = new JsonDebeziumDeserializationSchema(false, config) // 创建 MysqlSourceBuilder 对象 val builder: MySqlSourceBuilder[String] = MySqlSource.builder() .hostname(mysqlHostname) .port(mysqlPort) .username(mysqlUsername) .password(mysqlPasswd) .deserializer(jsonDebeziumDeserializationSchema) // 根据方法的 option 参数做不同的初始化操作,返回不同的 MysqlSource 对象 option match { case "dim" => builder .databaseList("tms") .tableList("tms.user_info", "tms.user_address") .startupOptions(StartupOptions.initial()) .serverId(serverId) .build() case "dwd" => builder .databaseList("tms") .tableList("tms.order_info", "tms.order_cargo", "tms.transport_task", "tms.order_org_bound") .startupOptions(StartupOptions.initial()) .serverId(serverId) .build(); } logger.error("不支持的操作类型") null }实现了什么功能
这段代码实现了根据传入的参数创建一个用于连接 MySQL 数据库的数据源对象。具体功能如下:
1. 通过 `ParameterTool` 类读取程序启动参数,获取 MySQL 数据库的连接信息。
2. 创建一个配置信息的 `Map` 集合,其中包含了将 Decimal 数据类型解析为字符串的配置。
3. 创建一个 `JsonDebeziumDeserializationSchema` 对象,用于解析从 MySQL 数据库读取的 JSON 数据。
4. 创建一个 `MySqlSourceBuilder` 对象。
5. 根据传入的 `option` 参数,初始化不同的数据源对象:
- 如果 `option` 参数为 "dim",则设置数据库名为 "tms",表名为 "tms.user_info" 和 "tms.user_address",并使用初始启动选项和给定的 `serverId` 构建数据源对象。
- 如果 `option` 参数为 "dwd",则设置数据库名为 "tms",表名为 "tms.order_info"、"tms.order_cargo"、"tms.transport_task" 和 "tms.order_org_bound",并使用初始启动选项和给定的 `serverId` 构建数据源对象。
6. 如果 `option` 参数不匹配任何已知选项,则记录错误日志并返回 `null`。
总体而言,这段代码实现了根据不同的选项参数创建不同配置的 MySQL 数据源对象。
mysql decimal
The MySQL DECIMAL data type is used to store exact numeric values with a fixed precision and scale. The precision is the total number of digits that can be stored, and the scale is the number of decimal places that can be stored.
For example, DECIMAL(8,2) can store up to 8 digits, with 2 of them being decimal places. So, it can store values like 123456.78 or -123456.78.
DECIMAL data type is useful for financial and monetary values, where exact precision is required. It is also commonly used in scientific calculations where precise decimal values are necessary.
阅读全文