我正在努力将访问权限 Right()函数迁移到SQL Server。
这是Access Right()函数:
Barcode: "ID" & (Right(String(8,"0") & [Job Number],8) & Right(String(6,"0") &
[PART LIBARY HEADER_1]![PartID],6) & Right(String(6,"0") & [Part Assembly Link
Table]![AssemblyLinkID],6))
以上表达式的作用是,它动态创建一个字段来容纳始终为22个字符的条形码。现在,这些条形码的值由其他列确定。 我正在使用 Right()方法收集最右边的字符:作业编号8个字符,零件ID的6个字符和AssemblyLinkID的6个字符。
现在我面临的问题是,尽管我可以将这些值移到T-SQL上,但是我很难将默认值设置为= 0。
例如以下输入:
职位编号: 123456
PartID: 9876
AssemblyLinkID: 127
需要返回... ID00123456009876000127
访问中的 String()函数正在通过附加 0 为我处理null值,但是此方法在SQL Server中不可用。
String(8,"0")
到目前为止,这是我的SQL代码:
Concat('ID', RIGHT(STR(0, 8) & [Job Number],8)) AS Barcode,
STR()不是我要使用的函数,因为它不能提供与MS Access的 String()相同的结果。
答案 0 :(得分:2)
这可以完成您想要的工作:
onDestroy
您可以将https://developer.apple.com/documentation/quicklook/1402623-qlthumbnailimagecreate用作您的declare @t table ([Job NUmber] int, PartID int, AssemblyLinkID int)
insert into @t ([Job NUmber], PartID, AssemblyLinkID) values(123456,9876,127)
select
'ID' +
RIGHT('00000000' + CONVERT(varchar(8),[Job Number]),8) +
RIGHT('000000' + CONVERT(varchar(6),PartID),6) +
RIGHT('000000' + CONVERT(varchar(6),AssemblyLinkID),6)
from @t
调用的精确类似物,但是由于字符串文字比方法调用短,所以我更喜欢它们。
不确定您对STRING
的看法是什么,但是如果其中任何一列可能是null
,那么您也可以使用NULL
:
COALESCE
(这里,declare @t table ([Job NUmber] int, PartID int, AssemblyLinkID int)
insert into @t ([Job NUmber], PartID, AssemblyLinkID) values(123456,9876,127)
select
'ID' +
RIGHT('00000000' + COALESCE(CONVERT(varchar(8),[Job Number]),''),8) +
RIGHT('000000' + COALESCE(CONVERT(varchar(6),PartID),''),6) +
RIGHT('000000' + COALESCE(CONVERT(varchar(6),AssemblyLinkID),''),6)
from @t
的值将为全零。如果您需要其他值,请将其替换为每个表达式末尾的空字符串)
答案 1 :(得分:1)
Right(String(8,“ 0”)&[职位编号],8)=
RIGHT(REPLICATE('0', 8) + ISNULL([Job Number], ''), 8)