从字符串中删除特定字符(SQL Server 2012)
我有一个视图,我想从中删除其中一列中的特定字符。特别是下面“基金”栏中的“B”字符 我尝试使用以下版本的TRIM 这给了我一个错误 味精156,15级,状态1,第3行。 关键字“FROM”附近的语法不正确 您可以使用replace来执行此操作。在本例中,它将搜索“B”,并用空字符串替换它->。请注意,此函数将替换此列中的所有“B”从字符串中删除特定字符(SQL Server 2012),sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有一个视图,我想从中删除其中一列中的特定字符。特别是下面“基金”栏中的“B”字符 我尝试使用以下版本的TRIM 这给了我一个错误 味精156,15级,状态1,第3行。 关键字“FROM”附近的语法不正确 您可以使用replace来执行此操作。在本例中,它将搜索“B”,并用空字符串替换它->。请注意,此函数将替换此列中的所有“B” SELECT REPLACE([Port_Ticker], 'B', '') as "Fund" ,[BENCH_Ticker] as
SELECT
REPLACE([Port_Ticker], 'B', '') as "Fund"
,[BENCH_Ticker] as "Index ID"
,format(cast([VALUE_DATE] as Date),'dd/MM/yyyy') as "Updat"
,([Port_Risk_Contrib] / 10000000) as "StDev Fund"
,([Active_risk_contrib] / 10000000) as "TE"
,([BENCH_RISK_CONTRIB] / 100) as "StDev BM"
FROM [DM_PORTFOLIO_ANALYSIS].[basedata].[PortfolioRiskFigures]
where [BLOCK_FACTOR] = 'Total'
and [Port_ticker] = 'B1023'
order by [VALUE_DATE] asc
您可以使用replace来执行此操作。在本例中,它将搜索“B”,并用空字符串替换它->。请注意,此函数将替换此列中的所有“B”
SELECT
REPLACE([Port_Ticker], 'B', '') as "Fund"
,[BENCH_Ticker] as "Index ID"
,format(cast([VALUE_DATE] as Date),'dd/MM/yyyy') as "Updat"
,([Port_Risk_Contrib] / 10000000) as "StDev Fund"
,([Active_risk_contrib] / 10000000) as "TE"
,([BENCH_RISK_CONTRIB] / 100) as "StDev BM"
FROM [DM_PORTFOLIO_ANALYSIS].[basedata].[PortfolioRiskFigures]
where [BLOCK_FACTOR] = 'Total'
and [Port_ticker] = 'B1023'
order by [VALUE_DATE] asc
该功能在2017版中引入。
当然,您不能在旧版本中使用它
有几种方法可以做到这一点,如M.Kanarkowski在其回答中所示,使用替换,或使用以下任何选项:
:STUFF[Port_Ticker],1,1,作为基金,
:子字符串[Port_Ticker],2,LEN[Port_Ticker]作为基金
:RIGHT[端口号],LEN[端口号]-1作为基金该功能在2017年版本中引入。
当然,您不能在旧版本中使用它
有几种方法可以做到这一点,如M.Kanarkowski在其回答中所示,使用替换,或使用以下任何选项:
:STUFF[Port_Ticker],1,1,作为基金,
:子字符串[Port_Ticker],2,LEN[Port_Ticker]作为基金
:RIGHT[Port\u Ticker],LEN[Port\u Ticker]-1作为基金我建议不要使用格式,这是一个非常慢的函数。您最好使用CONVERT和a。所以formatcast[VALUE_DATE]as DATE,'dd/MM/yyyyy'可以更改为CONVERTvarchar10[VALUE_DATE],103假设VALUE_DATE是一个datetime数据类型,我看不出为什么会这样,因为它存储了一个日期:TRIM自SQL Server 2017年起提供。因此,您的版本不支持TRIM:与转换相比,格式的速度有多慢的示例:我建议不要使用格式,这是一个非常慢的函数。您最好使用CONVERT和a。所以formatcast[VALUE_DATE]as DATE,'dd/MM/yyyyy'可以更改为CONVERTvarchar10[VALUE_DATE],103假设VALUE_DATE是一个datetime数据类型,我看不出为什么会这样,因为它存储了一个日期:TRIM自SQL Server 2017年起提供。因此,您的版本不支持TRIM:与转换相比,格式的速度有多慢的示例: