convert(char(11),(field_name_1 + right('0' + cast(field_name_2 as varchar(2),2))
convert()(文档https://technet.microsoft.com/en-us/library/ms187928(v=sql.105).aspx):
告诉 sql server 将第二个参数中的值转换为第一个参数中给定的类型。
char(11):
告诉sql server命令后面的值需要变成字符字段类型,最大长度为11个字符。
在逗号之后我们有以下内容
(field_name_1 + right('0' + cast(field_name_2 as varchar(2),2)
field_name_1 对应于您正在阅读的表格中的字段。它将获取该字段的值并将其放在那里。
+ 表示追加字符串。将+ 之后的值附加到+ 之前的值
例如
'foo' + 'bar' = 'foobar'
'foo' + 'baz = 'foobaz'
所以在这种情况下,+ 后面的任何内容都应附加到 field_name_1 的值中
right是一个函数,获取从字符串末尾开始的N个字符(文档https://docs.microsoft.com/en-us/sql/t-sql/functions/right-transact-sql)
在这个函数中发生了很多事情。但是逗号'0' + cast(field_name_2 as varchar(2)之前的第一部分是调用字符串right,2是从中选择的字符数,从末尾开始。
因此,如果您将以下值输入正确
013
03
044
你最终会得到
13
03
44
现在我们有了这个部分:
'0' + cast(field_name_2 as varchar(2)`
'0' 是一个字符串文字。这只是一个长度为 1 的字符串,其中包含字符 0
+ 表示追加字符串。将+ 之后的值附加到+ 之前的值
所以在这种情况下,+ 后面的任何内容都将附加到0。
示例:
'0' + 'foo' = '0foo'
'0' + '1' = '01'
cast(field_name_2 as varchar(2))
在您的代码中,您实际上在这里缺少一个结束 ),这可能会给您带来一些麻烦。
基本上它的作用是取field_name_2的值,它可能是整数类型(只是猜测)并将其转换为varchar类型,最大长度为2(猜测数字永远不会超过99) .
所以一个值为1的数字会变成一个字符串,其值为1,即'1'。
2 = '2';
33 = '33';
42 = '42';
这与前面的部分结合将产生
'0' + '2' = '02';
'0' + '33' = '033';
'0' + '42' = '042';
这将被输入到right(value, 2);,这将导致
right('02', 2) = '02';
right('033', 2) = '33';
right('042', 2) = '42';
将附加到field_name_1的值
'foobar' + '02' = 'foobar02';
然后将其转换为最大长度为 11 个字符的字符类型字符串值。