请问一个sql语句写法

sektor 2005-05-04 06:33:22
字段A 字符型 如"A"
字段B 整型 如"123"

想得到的结果类似于vb里format以后的字符串,类似于"A000000123"

也就是把字段B经过格式化,不足9位的前补0,然后字段A与之连接,返回结果.


如果可以的话就不必每个表格按行格式化加行了,直接给表格数据源就OK了,谢谢..
...全文
136 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2005-05-06
  • 打赏
  • 举报
回复
TO jjkk168:

Dim A, C
A = 123222
C = Format(A, "0000000000")
Debug.Print C

这个是针对 wghshy(小乐)的问题,不是楼主的问题
还想懒够 2005-05-06
  • 打赏
  • 举报
回复
//如果不涉及数据库,你的长代码可以用format搞定吧?
Dim A, C
A = 123222
C = Format(A, "0000000000")
Debug.Print C

//vbman2003(家人) 正解


错解

不是定长,看清楚题意
wenhongL 2005-05-05
  • 打赏
  • 举报
回复
vbman2003(家人) 正解
royvb 2005-05-05
  • 打赏
  • 举报
回复
vbman2003(家人) 正解
vbman2003 2005-05-05
  • 打赏
  • 举报
回复
如果不涉及数据库,你的长代码可以用format搞定吧?
Dim A, C
A = 123222
C = Format(A, "0000000000")
Debug.Print C
wghshy 2005-05-05
  • 打赏
  • 举报
回复
如果位数再多点,我得写到天晕地暗了.
我现在将代码全改成用Right函数来写了.OH,太谢谢了.
wghshy 2005-05-05
  • 打赏
  • 举报
回复
我原来的长代码如下:
dim C as String
Select Case B
Case 1 To 9
C = "00000000" & A
Case 10 To 99
C = "0000000" & A
Case 100 To 999
C = "000000" & A
Case 1000 To 9999
C = "000000" & A
Case 10000 To 99999
C = "00000" & A
Case 100000 To 999999
C = "0000" & A
Case 1000000 To 9999999
C = "000" & A
Case 10000000 To 99999999
C = "00" & A
Case 100000000 To 999999999
C = "0" & A
Case 1000000000 To 9999999999
C = A
End Select
wghshy 2005-05-05
  • 打赏
  • 举报
回复
我一直都用select case 来做.
现在学了一招,一个语句搞定了我的一大段长代码,谢谢大家.
vbman2003 2005-05-05
  • 打赏
  • 举报
回复
在SQL数据库下试了一下:
select 前缀+ right('0000000000'+rtrim(convert(char(10),号码)),长度) as code from tb
vbman2003 2005-05-05
  • 打赏
  • 举报
回复
比如,表:
前缀 号码 长度
A 123 5
B 234 7

能让取出的记录集是如下内容呢:

A00123

B0000234
************************************************************
ACCESS这样试试:

select 前缀 + right('0000000000'+format(号码),长度) as code from tb

还想懒够 2005-05-05
  • 打赏
  • 举报
回复
select 'A','BC',3,'A' + Replace(SPACE(3-Len('BC')),' ','0') + 'BC'


'A'为第一个字段
'BC'为第二个字段
3为第三个字段

自己去替换一下。
sektor 2005-05-05
  • 打赏
  • 举报
回复

楼上有个老兄也是同样问题?

谢谢家人,正解.
在你没出现之前我用mid来解决了,实在是不知道sql内置函数啊,汗一个,试出来的.
SQL = "select bills_home.票据代码," & _
"bills_code.票据名称," & _
"bills_code.每本份数," & _
"bills_code.号码长度," & _
"(bills_home.终止号-bills_home.起始号+1)/bills_code.每本份数 as 本数," & _
"bills_home.终止号-bills_home.起始号+1 as 份数," & _
"bills_home.前缀," & _
"format(bills_home.起始号,mid('000000000000',1,bills_code.号码长度)) as 起始号," & _
"format(bills_home.终止号,mid('000000000000',1,bills_code.号码长度)) as 终止号," & _
"bills_home.仓库 as 所在仓库" & _
" from bills_home INNER JOIN bills_code ON bills_home.票据代码 = bills_code.票据代码" & _
" order by bills_home.票据代码,bills_home.起始号"
wghshy 2005-05-05
  • 打赏
  • 举报
回复
如果不涉及数据库,你的长代码可以用format搞定吧?
Dim A, C
A = 123222
C = Format(A, "0000000000")
Debug.Print C
------------------------------------------------
当然涉及数据库,Format不适用.
如果Format可以的话,我也不用想破头去想出那么长一段代码出来了.
如果早点知道Right函数的这个小技巧,这段长代码也不存在了.
sektor 2005-05-04
  • 打赏
  • 举报
回复
有没有哪位兄弟姐妹知道?是不只有存储过程才能实现?现在这情况已经没有办法改用sql数据库了...
sektor 2005-05-04
  • 打赏
  • 举报
回复
"bills_in.前缀 + format(bills_in.起始号,""" & SQL_FMT & """),"


这里,提前根据字段"号码长度"作了判断,用几个0的格式化串.
问题是只可以用在取出的记录集"号码长度"都一致的情况下.不一至了,如何在语句中达到同的目的呢?
比如,表:
前缀 号码 长度
A 123 5
B 234 7

能让取出的记录集是如下内容呢:

A00123

B0000234


犯难....


sektor 2005-05-04
  • 打赏
  • 举报
回复
谢楼上的,要的是在sql里一气呵成.
如:

Sql = "select bills_dept.单位名称," & _
"bills_in.票据代码," & _
"bills_code.票据名称," & _
"bills_in.前缀," & _
"bills_code.每本份数," & _
"bills_code.号码长度," & _
"bills_in.前缀 + format(bills_in.起始号,""" & SQL_FMT & """)," & _
"bills_in.前缀 + format(bills_in.终止号,""" & SQL_FMT & """)," & _
"bills_in.经办人," & _
"bills_in.缴验日期" & _
" from ((bills_in INNER JOIN bills_code ON bills_in.票据代码 = bills_code.票据代码)" & _
"INNER JOIN bills_dept ON bills_in.单位代码 = bills_dept.单位代码)" & _
" where bills_in.票据代码='" & _
CBO_PJDM.List(CBO_PJDM.ListIndex) & _
"' order by bills_in.票据代码,bills_in.起始号"
ALEXincn 2005-05-04
  • 打赏
  • 举报
回复
DIM STR AS STRING
STR= A + RIGHT(REPLACE(SPACE(C)," " ,"0") & CSTR(B),C)
sektor 2005-05-04
  • 打赏
  • 举报
回复
有没有人接一招啊?

现在卡在了如何根据字段C来决定格式化串的长度.
sektor 2005-05-04
  • 打赏
  • 举报
回复
加强一下问题:

字段A 字符型 如 A
字段B 整型 如 123
字段C 整型 如 9
想得到的结果类似于vb里format以后的字符串,类似于"A000000123"

也就是把字段B经过格式化,不足 字段 C 的前补0,然后字段A与之连接,返回结果.

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧