我有一个输出列名member_name
select
LEFT(member_name, charindex('/', member_name) - 1) + ' '
+ SUBSTRING(member_name, charindex('/', member_name) + 1, 1) as member_name
from member
输出带姓氏和名字首字母的字符串。
如何在表格中输出不同列中的第一个字母和姓氏?
例如,让它输出如下内容:
first | last name
-----------------
J | DOE
B | DOE-DOE
Z | SMITH
答案 0 :(得分:4)
select
substring(member_name, charindex('/', member_name) + 1, 1) as first_initial,
left(member_name, charindex('/', member_name) - 1) as last_name
from
member
答案 1 :(得分:1)
我还没有回复评论的声誉,但正如你在答案中的评论中所说,可以在冷聚合中完成,但我' d认为SQL是你更好的选择。
<cfoutput query="get_names">
<cfset l_name = listfirst(member_name,"/")>
<cfset f_initial = left(listlast(member_name,"/"),1)>
<!--- if you want f_initial capitalized, use the below cfset rather than the above --->
<cfset f_initial = ucase(left(listlast(member_name,"/"),1))>
First initial: #f_initial#, Last name: #l_name#<br>
</cfoutput>
这会根据你的小提琴输出:
First initial: J, Last Name: suarez
First initial: J, Last Name: suarez
First initial: S, Last Name: mejia
First initial: D, Last Name: orozco
这是一个很好的练习,可以帮助理解cf的工作原理,更重要的是,您的查询可以为您做什么以及您的代码可以重叠,但再次我推荐sql解决方案。
答案 2 :(得分:0)
虽然我认为处理这种情况的最佳方法是在我的另一个答案中修改SQL,这里只是基于你的小提琴数据布局在CF中进行修改的方法。
<cfquery name="getMembers">
select member_name from member
</cfquery>
<table>
<tr><td>First</td><td>Last Name</td></tr>
<cfoutput>
<cfloop query="getMembers">
<cfset aMember = ListToArray(member_name, "/")>
<tr><td>#left(aMember[2],1)#</td><td>#aMember[1]#</td></tr>
</cfloop>
</cfoutput>
</table>