正在获取 SQL 没有特殊字符、空格和带有

Getting SQL View with no special characters, spaces and with

基地Table:

Someid   |         SomeName
_______________________________
    1    |    Name -,#
    2    |    Something else ,-'

期望的输出,最好在视图中:

SomeName 的别名 = SomeAlias

    SomeAlias
________________
     name
 somethingelse

所以我的问题是如何创建一个视图来删除所有古怪的字符和空格(不是数字)并将所有内容更改为小写。

我不想以任何方式更改 SomeName 列或条目。

我正在使用 SQL Server 2014

编辑:

为了任何伪代码:

基础table =

SomeTable

输出Table =

SomeView

您可以创建如下函数,

USE DBName; 
GO
Create Function [dbo].[RemoveNonAlphaNumericCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin

Declare @KeepValues as varchar(50)
Set @KeepValues = '%[^a-z0-9]%'
Set @Temp = LOWER(@Temp)
While PatIndex(@KeepValues, @Temp) > 0
    Set @Temp = Stuff(@Temp, PatIndex(@KeepValues, @Temp), 1, '')

Return @Temp
End

您可以在创建视图时使用该功能,

USE DBName; 
GO
CREATE VIEW SomeView
AS
SELECT SomeID, [dbo].[RemoveNonAlphaNumericCharacters](SomeName) as SomeAlias
FROM SomeTable ; 
GO
-- Query the view
SELECT *
FROM SomeView;

有一些方法可以让它像 REPLACE string 一样,创建 FUNCTION 来替换 string 我们也可以使用正则表达式

DECLARE @regex INT,@string varchar(100)
SET @string='india!@#$%^&*()_+<>?:"{}| indian'
SET @regex = PATINDEX('%[^a-zA-Z0-9 ]%', @string)
WHILE @regex > 0
BEGIN
SET @string = STUFF(@string, @regex, 1, ' ' )
SET @regex = PATINDEX('%[^a-zA-Z0-9 ]%', @string)
END
SELECT @string