Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 强制转换-使字符串长度为2个字符_Sql_String_Casting - Fatal编程技术网

Sql 强制转换-使字符串长度为2个字符

Sql 强制转换-使字符串长度为2个字符,sql,string,casting,Sql,String,Casting,我需要合并两个字段,但强制第二个字符串的字符为2个字符 我将年字段和月字段合并,并希望结果为YYYY\u MM。将任何单个月份(例如1,2,3,4)强制转换为两位数格式,例如(01) 下面是我合并字段的公式,但我需要帮助将月份设置为两位数 谢谢,我 WITH so_header(soh_build_year,soh_build_week) AS ( SELECT 2020, 3 UNION ALL SELECT 2020,13 ) SELECT CAST(SO_HEADE

我需要合并两个字段,但强制第二个字符串的字符为2个字符

我将年字段和月字段合并,并希望结果为YYYY\u MM。将任何单个月份(例如1,2,3,4)强制转换为两位数格式,例如(01)

下面是我合并字段的公式,但我需要帮助将月份设置为两位数

谢谢,我

WITH so_header(soh_build_year,soh_build_week) AS (
          SELECT 2020, 3
UNION ALL SELECT 2020,13
)
SELECT
  CAST(SO_HEADER.SOH_Build_Year AS VARCHAR)
 +'_'
 +CAST(SO_HEADER.SOH_Build_Week AS VARCHAR) as [Build YYYY_WW]
FROM so_header;
试试这个:

WITH so_header(soh_build_year,soh_build_week) AS (
          SELECT 2020, 3
UNION ALL SELECT 2020,13
)
SELECT
  CAST(SO_HEADER.SOH_Build_Year AS VARCHAR)
+ '_'
+ SUBSTR(
    CAST(100+SO_HEADER.SOH_Build_Week AS VARCHAR)
  , 2
  , 2
) as Build_YYYY_WW
FROM so_header;
-- out  Build_YYYY_WW 
-- out ---------------
-- out  2020_03
-- out  2020_13
试试这个(语法:SQL Server)


如果您使用的是SQL Server,请用变量替换您的值。切勿使用无长度的
varchar
(或相关类型)。默认值因上下文而异,可能不够大,无法满足您的需要

如果您试图将日期转换为YYYY\u MM格式,可以使用
格式()

如果可以的话,我建议使用日期。如果您不使用SQL Server,大多数其他数据库都具有类似的功能

如果没有,您只需使用:

select concat(so_header.SOH_Build_Year, '_'
              right(concat('00', so_header.soh_build_week), 2)
             )

concat()
不需要显式地将值转换为字符串。

如果您能提供真实值而不是变量,那么最好使用您正在使用的数据库来回答您的问题。你为什么称“月”为“周”?
select format(getdate(), 'yyyy_MM')
select concat(so_header.SOH_Build_Year, '_'
              right(concat('00', so_header.soh_build_week), 2)
             )