Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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/7/sql-server/23.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 Server 2012)_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

从字符串中删除特定字符(SQL Server 2012)

从字符串中删除特定字符(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

我有一个视图,我想从中删除其中一列中的特定字符。特别是下面“基金”栏中的“B”字符

我尝试使用以下版本的TRIM

这给了我一个错误

味精156,15级,状态1,第3行。 关键字“FROM”附近的语法不正确

您可以使用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
您可以使用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:与转换相比,格式的速度有多慢的示例: