C# 在查询时防止[MEMNO]值中前面的零丢失?
我在应用程序中使用了几个SQL语句。我注意到,当某些成员号码返回时,例如012345,它们返回为12345。此数字用于协助文件命名约定,并且根据某些其他标准,需要采用6位格式才能正确处理文件 有人能帮我吗?切断源于查询IBMAS400系统。有人建议使用DIGITS函数,但我尚未将其用于以下示例查询:C# 在查询时防止[MEMNO]值中前面的零丢失?,c#,sql,odbc,database-connection,ibm-midrange,C#,Sql,Odbc,Database Connection,Ibm Midrange,我在应用程序中使用了几个SQL语句。我注意到,当某些成员号码返回时,例如012345,它们返回为12345。此数字用于协助文件命名约定,并且根据某些其他标准,需要采用6位格式才能正确处理文件 有人能帮我吗?切断源于查询IBMAS400系统。有人建议使用DIGITS函数,但我尚未将其用于以下示例查询: SELECT DISTINCT DIGITS(a.memno), a.name, a.addr1, a.addr2, a.city, a.state, a.zip, a.sex, a
SELECT DISTINCT DIGITS(a.memno),
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 as old_addr1,
b.addr2 as old_addr2,
b.city as old_city,
b.state as old_state,
b.zip as old_zip,
'P' as SYS
FROM Lib1.Table1 a, Lib1.Table2 b
WHERE a.memno = b.memno and
b.groupid = 'P2' and
b.type = 'B' and
b.rcchg <> 'N' and
b.datec = 20140107
AND (UPPER(a.addr1) <> UPPER(b.addr1) or UPPER(a.addr2) <> UPPER(b.addr2) or UPPER(a.city) <> UPPER(b.city) or UPPER(a.state) <> UPPER(b.state) or UPPER(a.zip) <> UPPER(b.zip))
UNION SELECT DISTINCT
DIGITS(a.memno),
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 as old_addr1,
b.addr2 as old_addr2,
b.city as old_city,
b.state as old_state,
b.zip as old_zip,
'N' as SYS
FROM Lib2.Table1 a, Lib2.Table2 b
WHERE a.memno = b.memno and
b.groupid = 'N2' and
b.type = 'B' and
b.rcchg <> 'N' and
b.datec = 20140107 AND (UPPER(a.addr1) <> UPPER(b.addr1) or UPPER(a.addr2) <> UPPER(b.addr2) or UPPER(a.city) <> UPPER(b.city) or UPPER(a.state) <> UPPER(b.state) or UPPER(a.zip) <> UPPER(b.zip))
ORDER BY sys, memno asc
此查询在ODBC连接上使用ODBC命令通过我的C应用程序发送。请尝试列号:
ORDER BY 16, 1 asc
编辑:添加支持背景信息
第一列未命名,因为它是函数的结果
最后一个表的第一列未命名,因为第一个SELECT中的column1未命名。
由于该列未命名,因此不能包含在ORDER BY中
因此,除了ORDER BY 1 asc之外,您还可以将第一个SELECT更改为
选择DISTINCT DIGITSa.memno作为memno,
...
按sys订购,memno
通过在第一个SELECT中为列指定名称,结果表列将具有名称
请尝试列编号:
ORDER BY 16, 1 asc
编辑:添加支持背景信息
第一列未命名,因为它是函数的结果
最后一个表的第一列未命名,因为第一个SELECT中的column1未命名。
由于该列未命名,因此不能包含在ORDER BY中
因此,除了ORDER BY 1 asc之外,您还可以将第一个SELECT更改为
选择DISTINCT DIGITSa.memno作为memno,
...
按sys订购,memno
通过在第一个SELECT中为列指定名称,结果表列将具有名称
请参阅我的编辑。不确定您是如何在IBMi端运行SQL的,或者您运行的是什么版本的DB2fori,或者您使用的是什么版本的ODBC驱动程序。很明显他们之间有区别。好的,谢谢你,巴克!这是可行的,但我也注意到服务器资源管理器一直试图将我的DIGITSa.memno重命名为Expr1,因此通过将其设置为DIGITSa.memno为memno,即使按sys、memno、asc的顺序,一切都正常运行。再次感谢你的帮助!请参阅我的编辑。不确定您是如何在IBMi端运行SQL的,或者您运行的是什么版本的DB2fori,或者您使用的是什么版本的ODBC驱动程序。很明显他们之间有区别。好的,谢谢你,巴克!这是可行的,但我也注意到服务器资源管理器一直试图将我的DIGITSa.memno重命名为Expr1,因此通过将其设置为DIGITSa.memno为memno,即使按sys、memno、asc的顺序,一切都正常运行。再次感谢你的帮助!