T-SQL权限函数默认值

时间:2018-09-03 08:55:58

标签: sql-server tsql ms-access database-migration

我正在努力将访问权限 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()相同的结果。

2 个答案:

答案 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)