我有这样的程序;
SET @Oldname = (SELECT name
FROM [Marketing].[dbo].[_Users]
WHERE ID = @MID);
一切都还可以,但有些成员得到xxx,xxx_A1,xxx_A2,xxx_A3,同时选择这些成员我想选择没有_A1,_A2,A_30
如何选择?
答案 0 :(得分:0)
尝试倒转字符串,找到_
的第一个索引并应用子字符串:
DECLARE @s NVARCHAR(MAX) = 'John_Smith_234'
DECLARE @t TABLE ( Name NVARCHAR(50) )
INSERT INTO @t
VALUES ( 'John_Smith_234' ),
( 'Michael_Jordan' ),
( 'Honore_De_Balzak_234' )
SELECT SUBSTRING(Name, 1, LEN(Name) - CHARINDEX('_', REVERSE(Name))) AS Name
FROM @t
输出:
Name
John_Smith
Michael
Honore_De_Balzak
答案 1 :(得分:0)
试试这个
select left(name, len(name)-charindex('_', reverse(name))) name
from whatever
答案 2 :(得分:-1)
确保您添加“'%'登录@MID变量,看起来像&x; xxx%'
使用LIKE而不是=:
SET @Oldname = (SELECT name From [Marketing].[dbo].[_Users] Where ID LIKE @MID);
我想你也可以添加'%'登录qour查询(没有尝试过):
SET @Oldname = (SELECT name From [Marketing].[dbo].[_Users] Where ID LIKE @MID+'%');