CR4*_*G14 20 sql sql-server sql-server-2008
我有一个大型数据库,我想在其中进行部分字符串搜索.用户将输入字符:JoeBloggs.
为了论证,如果我Joe 23 Blo Ggs 4
在数据库中有一个名字.我想删除AZ以外的所有名称.
我有REPLACE(Name, ' ','')
删除空格的UPPER()
功能和大写名称的功能.
是否有一种更有效的快速方式,可能通过正则表达式来替换除AZ以外的任何东西.我无法更改数据库中的值.
提前致谢
Jat*_*tin 35
第一选择 -
您可以嵌套REPLACE()
最多32级的功能.它运行得很快.
REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE (@str, '0', ''),
'1', ''),
'2', ''),
'3', ''),
'4', ''),
'5', ''),
'6', ''),
'7', ''),
'8', ''),
'9', '')
Run Code Online (Sandbox Code Playgroud)
第二种选择 - 反过来 -
第三个选项 - 如果你想使用正则表达式
然后 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=27205
Ben*_*son 11
这个对我有用
CREATE Function [dbo].[RemoveNumericCharacters](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
Declare @NumRange as varchar(50) = '%[0-9]%'
While PatIndex(@NumRange, @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex(@NumRange, @Temp), 1, '')
Return @Temp
End
Run Code Online (Sandbox Code Playgroud)
你可以像这样使用它
SELECT dbo.[RemoveNumericCharacters](Name) FROM TARGET_TABLE
Run Code Online (Sandbox Code Playgroud)
小智 6
我刚刚开始重新学习 SQL...我在某处读到了这个:
SELECT TRIM('0123456789' FROM customername )
Run Code Online (Sandbox Code Playgroud)
您还可以使用它来删除空格或其他符号。只需将其包含在引号内的第一个参数中即可''
。
请尝试以下查询。其中val是您的字符串或列名。
CASE WHEN PATINDEX('%[a-z]%', REVERSE(val)) > 1
THEN LEFT(val, LEN(val) - PATINDEX('%[a-z]%', REVERSE(val)) + 1)
ELSE '' END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
82640 次 |
最近记录: |