因此,我正在尝试编写一个查询,其中包括将Varchar字段中的第一个字符返回,然后返回出现的第一个字符在整个场地的每个角色之后。选择连接列中每个'/'字符后的第一个字符的语句
我也正在refrering的字段将包含一组姓氏,用'/'分隔。例如:Fischer-Costello/Korbell/Morrison/Pearson
对于上面的例子,我希望我的select语句返回:FKMP。
到目前为止,我只能让我的代码返回第一个字符+第一个字符后面的第一个字符(也只是第一个)。
因此,对于上面的例子中输入,我的select语句将返回:FK
这里是我迄今编写的代码:
select rp.CONTACT_ID, ra.TRADE_REP, c.FIRST_NAME, c.LAST_NAME,
UPPER(LEFT(FIRST_NAME, 1)) + SUBSTRING(c.first_name,CHARINDEX('/',c.first_name)+1,1) as al_1,
UPPER(LEFT(LAST_NAME, 1)) + SUBSTRING(c.LAST_name,CHARINDEX('/',c.LAST_name)+1,1) as al_2
from dbo.REP_ALIAS ra
inner join dbo.REP_PROFILE rp on rp.CONTACT_ID = ra.CONTACT_ID
inner join dbo.CONTACT c on rp.CONTACT_ID = c.CONTACT_ID
where
rp.CRD_NUMBER is null and
ra.TRADE_REP like '%DNK%' and
(c.LAST_NAME like '%/%' or c.FIRST_NAME like '%/%') and
ra.TRADE_FIRM in
(
'xxxxxxx',
'xxxxxxx'
)
如果您阅读代码,很明显,我我也尝试在first_name列上执行相同的连接。但是,我意识到一个解决方案将适用于Last_name列(在我的示例中使用),也适用于first_name列。
谢谢。
您的姓氏数据总是由四个用三个斜杠分隔的名称组成? – DMason
不,每个新记录的名称数量都会有所不同。 – FluffyKittens
您应该修复您的设计,以便多个名称不会存储在单个列中。 –