powershell - PowerShell - 选择带小数点分隔符的数字 (DB2 SQL)
问题描述
在使用 PowerShell 选择 DB2 数据时,无法弄清楚如何包含小数点分隔符。
DB2 表包含带有商品价格的列:
+------+---------+
| Item | Price |
+------+---------+
| A | 99,104 |
| B | 27,05 |
| C | 320,001 |
+------+---------+
这是获取此数据的 Powershell 脚本的一部分:
$SQL = "SELECT Item, Price FROM Inventory"
$connection = New-Object System.Data.Odbc.OdbcConnection
$connection.ConnectionString = "DSN=$DNS;UID=$USERNAME;password=$PASSWORD"
$connection.open() | Get-Item -ErrorAction Stop
$cmd = New-object System.Data.Odbc.OdbcCommand($SQL,$connection)
$result = New-Object system.Data.DataSet
(New-Object system.Data.odbc.odbcDataAdapter($cmd)).fill($result) # here comma gets removed from Price
$connection.close()
$result.Tables[0] | Export-Csv -NoTypeInformation -Delimiter -Encoding UTF8 $OutputFile
这以某种方式选择了不带小数的数据,这是不正确的 - 价格现在非常高:
99104
2705
320001
我虽然在Export-Csv期间删除了逗号,所以添加了-UseCulture,但结果是一样的。选择数据时似乎删除了逗号:
New-Object system.Data.odbc.odbcDataAdapter($cmd)
我的问题是我该如何解决这个问题?是否有其他参数或这里缺少什么?
解决方案
我还不能发表评论。
正如其他人所问的,数据库中价格列的数据类型是什么?根据您的输出,它是左对齐的,因此它似乎不是数字类型。
在这里使用 db2sample 数据库中的 PRODUCT 表进行简单测试:此外,您可以尝试使用 IBM.Data.Db2 .Net 提供程序而不是使用 ODBC。
$dbFactory = [System.Data.Common.DbProviderFactories]::GetFactory('IBM.Data.DB2')
$connection = $dbFactory.CreateConnection()
$connection.ConnectionString = "Database=SAMPLE"
$connection.Open()
$da = $dbFactory.CreateDataAdapter()
$ds = new-object "System.Data.DataSet"
$cmd = $dbFactory.CreateCommand()
$cmd.Connection = $connection
$cmd.CommandText = "SELECT PID, PRICE FROM PRODUCT"
$da.SelectCommand = $cmd
$da.Fill($ds)
$ds.Tables[0]
产生预期的十进制格式。
PID PRICE
--- -----
100-100-01 9,99
100-101-01 19,99
100-103-01 49,99
100-201-01 3,99
$ds.Tables[0].Columns[1].DataType
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Decimal System.ValueType
推荐阅读
- react-native - 反应原生运行android失败如何修复它
- android - WebRTC Android 视频聊天应用,无法让一台设备响另一台设备
- laravel - .env 变量在应用程序中不可访问
- javascript - 如何在 html 页面中使用从本机应用程序接收到的数据?
- reactjs - 您如何发布和订阅不是 Mongo db 的数据?
- jquery - jQuery淡入不显示
- android - Xamarin 显示项目模板获取中断模式
- android - 动画后使 Imageview 消失
- xml - 如何在 xslt 中转义换行符?
- php - 每次PHP,MySQL如何检索随机行