day7.关于字符串的相关操作
一、字符串的相关操作
"""
(1)字符串的拼接
(2)字符串的重复
(3)字符串跨行拼接
(4)字符串的索引
(5)字符串的切片:
语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到字符串的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
(5)[:]或[::] 截取所有字符串 """
1、字符串的拼接
# (1)字符串的拼接 +
strvar = "今天是" + "星期一"
strvar += ",今天非常开心"
print(strvar)
2、字符串的重复
# (2)字符串的重复 *
strvar = "重要的事情说三遍" * 3
print(strvar)
3、字符串跨行拼接
strvar = "sdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdfsdf" \
"多余的几行放在第二行进行显示"
print(strvar)
4、字符串的索引
# 正向索引 0123
strvar = ""
# 逆向索引 -4-3-2-1
5、字符串的切片
# (5)字符串的切片:(切片 <=> 截取)
# (1)[开始索引:] 从开始索引截取到字符串的最后
strvar = "黑夜给我了黑色的眼睛,但是我却用翻白眼"
res = strvar[11:]
print(res) # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
res = strvar[:10]
print(res) # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
res = strvar[8:10]
print(res) # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
# 正序
res = strvar[::3] # 0 3 6 9 12 15 ....从开始截取到最后
print(res)
# 倒序
res = strvar[::-1] # -1 -2 -3 -4 -5 -6 -7 ...
print(res) # (5)[:]或[::] 截取所有字符串
res = strvar[:]
res = strvar[::]
print(res)
二、字符串相关函数
# ### 字符串相关函数
# *capitalize 字符串首字母大写
strvar = "how old are you"
res = strvar.capitalize()
print(res) # *title 每个单词的首字母大写
strvar = "how old are you"
res = strvar.title()
print(res) # *upper 将所有字母变成大写
strvar = "to be or not to be that is a question"
res = strvar.upper()
print(res) # *lower 将所有字母变成小写
res = strvar.lower()
print(res) # *swapcase 大小写互换
strvar = "I Love You"
res = strvar.swapcase()
print(res) # *len 计算字符串的长度
strvar = "adfs234sdfsa"
res = len(strvar)
print(res) # *count 统计字符串中某个元素的数量
strvar = "adfs234sdfsa"
res = strvar.count("a")
print(res) # *find 查找某个字符串第一次出现的索引位置 (推荐)
"""字符串.find("字符",开始索引,结束索引) 如果找不到直接返回-1"""
strvar = "oh Father this is my Favorate dog"
res = strvar.find("F")
res = strvar.find("F",4)
res = strvar.find("Fav",5,10) # 结束索引本身取不到,取到之前的那个值
print(res) # *index 与 find 功能相同 find找不到返回-1,index找不到数据直接报错
# res = strvar.index("Fav",5,10) error # *startswith 判断是否以某个字符或字符串为开头
"""字符串.startswith("字符",开始索引,结束索引) 如果存在返回True,否则返回False"""
strvar = "oh Father this is my Favorate dog"
res = strvar.startswith("oh")
res = strvar.startswith("this",10)
res = strvar.startswith("this",10,13) # 10 11 12
print(res) # *endswith 判断是否以某个字符或字符串结尾
res = strvar.endswith("dog")
res = strvar.endswith("rate",-12)
res = strvar.endswith("rate",-12,-4)
print(res) # *isupper 判断字符串是否都是大写字母
strvar = "ABCD"
res = strvar.isupper()
print(res) # *islower 判断字符串是否都是小写字母
strvar = "abcdd12345"
res = strvar.islower()
print(res) # *isdecimal 检测字符串是否以数字组成 必须是纯数字
strvar = ""
strvar = "12354.8979112"
res = strvar.isdecimal()
print(res) strvar = "abc"
#ljust 填充字符串,原字符居左 (默认填充空格)
res = strvar.ljust(10)
print(res)
#rjust 填充字符串,原字符居右 (默认填充空格)
res = strvar.rjust(10,"&")
print(res)
# *center 填充字符串,原字符居中 (默认填充空格) res = strvar.center(10) # 原字符串长度 + 填充字符长度 = 10 ,默认填充空格
res = strvar.center(10,"#")
print(res) # *strip 默认去掉首尾两边的空白符
strvar = "@@@@@ 周杰伦 @@@@@"
res = strvar.strip()
res = strvar.strip("@") # 指定去掉的符号
print(res) strvar = "@@@@@ 周杰伦 @@@@@"
#rstrip 去掉右边某个字符
print( strvar.rstrip("@") )
#lstrip 去掉左边某个字符
print( strvar.lstrip("@") ) # 重要!!!
# *split 按某字符将字符串分割成列表(默认字符是空格)
strvar = "you can you up no can no bb"
lst = strvar.split()
strvar = "you-can-you-up-no-can-no-bb"
lst = strvar.split("-") # 从左到右分隔
lst = strvar.rsplit("-",2)# 从右到左分隔,(可以指定分隔的次数)
print(lst) # *join 按某字符将列表拼接成字符串(容器类型都可)
lst = ['you', 'can', 'you', 'up', 'no', 'can', 'no', 'bb']
res = "-".join(lst)
print(res) # *replace 替换,把字符串的旧字符换成新字符
"""replace(要替换的字符,替换成什么,替换的次数)"""
strvar = "可爱的小青蛙喜欢吃蚊子,有没有,有没有,还有没有"
res = strvar.replace("有没有","真没有")
res = strvar.replace("有没有","真没有",1)
print(res)
字符串相关函数
# test = "username\temail\tpassword\nkxssq\t113555\t123456\nkxq\t113555\t123456\nkxq\t113555\t123456"
# v = test.expandtabs(10)
# print(v) # 首字母大写
# test = "adfs"
# v = test.capitalize()
# print(v) # 大写转小写 lower只能对应英文字符 casefold可以特殊字符
# test = "aSdf"
# v1 = test.casefold()
# print(v1)
# v2 = test.lower()
# print(v2) # 设置宽度,并将内容居中
# 20总长度,把aSdf居中
# test = "aSdf"
# v = test.center(20, '*')
# print(v) # 空白未知填充,一个字符可有可无
# test = "kxq"
# v1 = test.ljust(20, '*')
# print(v1)
# v2 = test.rjust(20, '*')
# print(v2)
# v3 = test.zfill(20)
# print(v3) # 字符串出现的次数
# test = "aSdffaSdff"
# v = test.count('a')
# print(v) # 字符串在第几个字符之间出现的次数 a 0
# test = "aSdffaSdff"
# v = test.count('aS', 5, 11)
# print(v) # encode
# decode
# test = "aSdffaSdff"
# print(test.encode("gbk"))
# print(test.encode("utf-8")) # 以什么结尾
# test = "asdf"
# v = test.endswith('f')
# print(v)
# # 以什么开始
# test = "asdf"
# v = test.startswith('a')
# print(v) # 从开始往后找,找到第一个后,获取下标 >=5 <7 未找到-1
# 方法index() 找不到会报错 忽略用find 找不到返回-1
# test = "asdfasdf"
# v = test.find('sd', 5, 7)
# print(v) # 格式化,将字符串中的占位符替换为指定的值
# test = "i an {name}"
# v = test.format(name = 'kxq')
# print(v)
# test = "i an {0}"
# v = test.format('kxq')
# print(v)
#
# test = "i an {name}"
# v = test.format_map({"name": "kxq"})
# print(v) # 字符串中是否只包含字母数字
# test = "adf89-_"
# v = test.isalnum()
# print(v) # 字符串中是否是字母、汉字
# test = "adf89-_"
# v = test.isalpha()
# print(v) # 判定当前输入的是否是数字 isdigit()可以判定特殊的数字 例:圈2
# test = "123"
# v1 = test.isdecimal()
# v2 = test.isdigit() # 圈 2
# v3 = test.isnumeric() # 这种“二”也是数字
# print(v1, v2) # 是否存在不可显示的字符 \t \n
# test = "af\nds"
# v = test.isprintable()
# print(v) # 判断是否全部是空格
# test = "af dsd"
# v = test.isspace()
# print(v) # 判断是否是标题
# test = " Return True if the string is a title-cased string, False otherwise"
# v1 = test.istitle()
# print(v1)
# v2 = test.title()
# print(v2)
# v3 = v2.istitle()
# print(v3) # 将字符串中的每一个元素按照指定分隔符进行拼接
# test = "你是风儿我是沙"
# print(test)
# t = " "
# v = t.join(test)
# print(v) # lower:判断字符串是否全部为小写,字符串都变为小写 upper:判断字符串是否全部为大写,字符串都变为大写
# test = "Kxq"
# v1 = test.islower()
# v2 = test.lower()
# v3 = v2.islower()
# print(v1, v2, v3)
# v4 = test.isupper()
# v5 = test.upper()
# v6 = v5.isupper()
# print(v4, v5, v6) # # 去除左右 全部空格 \n \t 可移除指定字符串,有限最多匹配 test.rstrip(qx)
# test = " kxq "
# v1 = test.lstrip()
# v2 = test.rstrip()
# v3 = test.strip()
# print(v1)
# print(v2)
# print(v3) # v1建立对应关系,v1把test中字符aeiou替换为12345
# test = "fdasfgdasgas;aeiouasdfg;erwqiopjmfa"
# v1 = str.maketrans("aeiou", "12345")
# v2 = test.translate(v1)
# print(v2) # 以‘f’ 为分隔符,进行分割 parttition:从左到右 rpartition:从右到左 包含字符‘f’
test = "adfajlkupowerfsd"
v1 = test.partition('f')
print(v1)
# v2 = test.rpartition('f')
# print(v2)
# # 不包含字符'f'
# v3 = test.split('f')
# print(v3)
# v4 = test.rsplit('f')
# print(v4)
#
# # 分割,只能根据\n True包含\n False不包含\n
# test = "fasfs\ngasgf\natsgf"
# v1 = test.splitlines(True)
# print(v1)
# v2 = test.splitlines(False)
# print(v2) # 以***开头,以***结尾
# test = "fasgsafg"
# v1 = test.startswith('fa')
# print(v1)
# v2 = test.endswith('fg')
# print(v2) # 大小写转换
test = "kXq"
v1 = test.swapcase()
print(v1)
相对完整举例字符串函数
三、字符串的格式化 format
# (1)顺序传参
strvar = "{}向{}开了一枪,银弹而亡".format("李志辉","明浩")
print(strvar) # (2)索引传参
strvar = "考试时{1},游戏时{0}".format("唯唯诺诺","重拳出击")
print(strvar) # (3)关键字传参
strvar = "{who2}甩了一个飞吻,{who1}神魂颠倒".format(who1="刘彩霞",who2="马生平")
print(strvar) # (4)容器类型数据(列表或元祖)传参
strvar = "{1[2]}向{0[0]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(["孙翔群","曹晨光","宋云杰"],("李亚","孙致和","温子月"))
print(strvar) # format当中,不能使用逆向下标,不识别
strvar = "{group2[0]}向{group1[-1]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(group1 = ["孙翔群","曹晨光","宋云杰"],group2 = ("李亚","孙致和","温子月"))
print(strvar) # 如果容器是字典,直接写键值,不需要加上引号
strvar = "{group1[ccg]}向{group2[1]}抛了一个媚眼,鼻血直冒三万多尺,失血而亡".format(group1 = {"kxq":"孙翔群","ccg":"曹晨光","syj":"宋云杰"},group2 = ("李亚","孙致和","温子月"))
print(strvar)
format
1、format填充符号的使用
"""
^ 原字符串居中
> 原字符串居右
< 原字符串居左 {who:*^10}
who : 关键字参数
* : 要填充的字符
^ : 原字符串居中
10 : 总长度 = 原字符串长度 + 填充字符长度
""" strvar = "{who:*^10}在{where:>>10},{do:!<10}".format(who="刘鹏",where="电影院",do="拉屎")
print(strvar) # (6)进制转换等特殊符号的使用( :d :f :s :, ) # :d 整型占位符 (要求类型必须是整型)
strvar = "刘子豪昨天买了{:d}个花露水".format(100) # 100.5error
print(strvar)
# :2d 占用两位,不够两位拿空格来补,默认居右
strvar = "刘子豪昨天买了{:2d}个花露水".format(3)
# < > ^ 调整对应的位置
strvar = "刘子豪昨天买了{:<2d}个花露水".format(3)
strvar = "刘子豪昨天买了{:^3d}个花露水".format(3)
print(strvar) # :f 浮点型占位符 (要求类型必须是浮点型)
strvar = "刘心毕业时,找工作的薪资是{:f}".format(2.5)
# :.2f 小数点保留2位
strvar = "刘心毕业时,找工作的薪资是{:.2f}".format(2.56789)
print(strvar) # :s 字符串占位符 (要求类型必须是浮点型)
strvar = "{:s}".format("今天天气不错,万里无云")
print(strvar) # :, 金钱占位符
strvar = "{:,}".format(123456789)
print(strvar)
填充符号的使用
四、练习
'''
1.有变量name = "aleX leNb" 完成如下操作: 移除 name 变量对应的值两边的空格,并输出处理结果
1)移除name变量左边的"al"并输出处理结果
2)移除name变量右面的"Nb",并输出处理结果
3)移除name变量开头的a与最后的"b",并输出处理结果
4)判断 name 变量是否以 "al" 开头,并输出结果
5)判断name变量是否以"Nb"结尾,并输出结果
6)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
7)将name变量对应的值中的第一个"l"替换成"p",并输出结果
8)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
9)将name变量对应的值根据第一个"l"分割,并输出结果。
10)将 name 变量对应的值变大写,并输出结果
11)将 name 变量对应的值变小写,并输出结果
12)将name变量对应的值首字母"a"大写,并输出结果
13)判断name变量对应的值字母"l"出现几次,并输出结果
14)如果判断name变量对应的值前四位"l"出现几次,并输出结果
15)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
16)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
17)从name变量对应的值中找到"X le"对应的索引,并输出结果
18)请输出 name 变量对应的值的第 2 个字符?
19)请输出 name 变量对应的值的前 3 个字符?
20)请输出 name 变量对应的值的后 2 个字符?
21)请输出 name 变量对应的值中 "e" 所在索引位置? 2.实现一个整数加法计算器(两个数相加):
如:content = input("请输入内容:") 用户输入:5+9或3+ 9或5 + 6,然后进行分割再进行计算 3.升级题:实现一个整数加法计算器(多个数相加):
如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。 4.计算用户输入的内容中有几个整数(以个位数为单位)。
如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla 5.等待用户输入内容,是否包含敏感字符?
如果存在敏感字符提示“存在敏感字符请重新输入”,敏感字符:“粉嫩”、“铁锤” 6.制作趣味模板程序需求:等待用户输入名字、地点、爱好
拼装数据打印出:敬爱可亲的xxx,最喜欢在xxx地方xxx
'''
# 0)移除 name 变量对应的值两边的空格,并输出处理结果
res = name.strip()
print(res)
1.0
# 1)移除name变量左边的"al"并输出处理结果
res = name.lstrip("al")
res = name[2:]
print(res)
1.1
# 2)移除name变量右面的"Nb",并输出处理结果
res = name.rstrip("Nb")
res = name[:-2]
print(res)
1.2
# 3)移除name变量开头的a与最后的"b",并输出处理结果
print(name[1:-1])
res = name.strip("ab")
print(res)
1.3
# 4)判断 name 变量是否以 "al" 开头,并输出结果
print(name.startswith("al"))
1.4
# 5)判断name变量是否以"Nb"结尾,并输出结果
print(name.endswith("Nb"))
1.5
# 6)将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
print(name.replace("l","p") )
1.6
# 7)将name变量对应的值中的第一个"l"替换成"p",并输出结果
print(name.replace("l","p",1) )
1.7
# 8)将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
print(name.split("l"))
1.8
# 9)将name变量对应的值根据第一个"l"分割,并输出结果。
print(name.split("l",1))
1.9
# 10)将 name 变量对应的值变大写,并输出结果
print(name.upper())
1.10
# 11)将 name 变量对应的值变小写,并输出结果
print(name.lower())
1.11
# 12)将name变量对应的值首字母"a"大写,并输出结果
print(name.capitalize())
1.12
# 13)判断name变量对应的值字母"l"出现几次,并输出结果
name.count("l")
1.13
# 14)如果判断name变量对应的值前四位"l"出现几次,并输出结果
print(name.count("l",0,4))
1.14
# 15)从name变量对应的值中找到"N"对应的索引(如果找不到则报错),并输出结果
name.index("N")
1.15
# 16)从name变量对应的值中找到"N"对应的索引(如果找不到则返回-1)输出结果
name.find("N")
1.16
# 17)从name变量对应的值中找到"X le"对应的索引,并输出结果
name.find("X le")
1.17
# 18)请输出 name 变量对应的值的第 2 个字符?
name[1]
1.18
# 19)请输出 name 变量对应的值的前 3 个字符?
name[:3]
1.19
# 20)请输出 name 变量对应的值的后 2 个字符?
name[-2:]
1.20
# 21)请输出 name 变量对应的值中 "e" 所在索引位置?
name = "aleX leNb"
print(name.find("e")) i = 0
while i<len(name):
if name[i] == "e":
print(i)
i+=1
1.21
# 2.实现一个整数加法计算器(两个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9或3+ 9或5 + 6,然# 后进行分割再进行计算
content = input("请输入内容:")
print(content)
a,b = content.split("+")
total = int(a) + int(b)
print(total) print( int(" 6 ") )
2
# 3.升级题:实现一个整数加法计算器(多个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。
content = input("请输入内容:")
lst = content.split("+")
total = 0
print(lst)
for i in lst:
total += float(i)
print(total) total = 0
content = input("请输入内容:")
for i in content :
if i.isdecimal():
total += 1 print(total)
3
# 5.等待用户输入内容,是否包含敏感字符?
# 如果存在敏感字符提示“存在敏感字符请重新输入”,敏感字符:“粉嫩”、“铁锤”
while True:
sign = False
strvar = input("请输入内容:")
lst = ["粉嫩","铁锤"]
for i in lst:
if i in strvar:
sign = True
print("有敏感词汇") if sign == False:
print("这个名字可以使用") # for .. else .. 如果遇到break终止循环,else这个分支不执行;
for i in range(3):
print(i)
if i == 1:
break
else:
print("ok") while True:
sign = False
strvar = input("请输入内容:")
lst = ["粉嫩","铁锤"]
for i in lst:
if i in strvar:
print("有敏感词汇!")
break
else:
print("这个名字可以使用!")
5
# 6.制作趣味模板程序需求:等待用户输入名字、地点、爱好
# 拼装数据打印出:敬爱可亲的xxx,最喜欢在xxx地方xxx name = input("请输入名字:")
place = input("请输入地点:")
hobby = input("请输入爱好:") print("敬爱可亲的{},最喜欢在{}地方{}".format(name,place,hobby))
6
day7.关于字符串的相关操作的更多相关文章
- Python字符串的相关操作
1.大小写转换 判断字符串 s.isalnum() #所有字符都是数字或者字母 s.isalpha() #所有字符都是字母 s.isdigit() #所有字符都是数字 s.islower() #所有字 ...
- 路径打印(set以及字符串的相关操作)
题目链接 题目描述 给你一串路径,譬如: a\b\c a\d\e b\cst d\ 你把这些路径中蕴含的目录结构给画出来,子目录直接列在父目录下面,并比父目录向右缩一格,就像这样: a b ...
- Java 常用知识点汇总(数据类型之间转换、字符串的相关操作-截取、转换大小写等)
1.Java四类八种数据类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存中占16位,即2个字节,取值范围- ...
- Python中的字符串及其相关操作
1.表示: 字符串可以用单引号或者双引号括起来,两者效果是完全一样的. 针对较长的字符串,也可以用三个引号括起来,即"""..."""或者' ...
- JS中字符串的相关操作
一.字符串的创建 创建一个字符串有几种方法.最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量. var myStr = "Hello, String!"; 可以用双 ...
- python基础学习一 字符串的相关操作
python的字符串 在python中,字符串是以unicode编码的,所以python的字符串支持多语言 对于单个字符的编码,python提供了ord()函数获取字符的整数表示,chr()函数是把编 ...
- Python 字符串的相关操作
s = "abcdefg" s1 = s.capitalize() # 把首字母变成大写, 返回给你一个新的字符串 print(s) print(s1) s = "ale ...
- python基础===【字符串】所有相关操作
#字符串的相关操作 #基本操作 #+ 字符串连接操作 str1 = '来是come走是go' str2 = '点头yes摇头no' result = str1 + str2 print(result) ...
- DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 实现日期和字符串之间的转换以及日期的相关操作: 1.日期格式的字符串输出为Date类型: 2.将Date类型以指定格式输出: 3.将 ...
随机推荐
- Linux多任务编程之六:编写多进程程序及其代码(转)
来源:CSDN 作者:王文松 转自Linux公社 ------------------------------------------------------------------------- ...
- MYSQL 之 JDBC(六): 增删改查(四)利用反射及JDBC元数据编写通用的查询
1.先利用SQL进行查询,得到结果集2.利用反射创建实体类的对象:创建Student对象3.获取结果集的列的别名:idCard.studentName4.再获取结果集的每一列的值,结合3得到一个Map ...
- java 面向对象(十五):面向对象的特征三:多态性
1.多态性的理解:可以理解为一个事物的多种形态.2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)举例:Person p = new Man();Object obj ...
- [USACO3.1]形成的区域(扫描线+离散化)
[USACO3.1]形成的区域(P6432) 日期:2020-05-31 目录 [USACO3.1]形成的区域(P6432) 一.题意分析 二.算法分析 1. 暴力 0). 初始状态(红点为原点) 1 ...
- Python Ethical Hacking - KEYLOGGER(3)
Object-Oriented Programming Keylogger Classes Way of modeling program(blueprint). Logically group fu ...
- 010.Nginx正反代理
一 Nginx代理 1.1 Nginx代理概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器.同时也是一个IMAP.POP3.SMTP代理服务器.nginx可以作为一个HTT ...
- IDEA命令行缩短器助你解决此问题:Command line is too long. Shorten command line...
生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...
- echarts 实战 : 怎么处理特殊的图表数字 label ?
所谓Label,就是在图表上面显示的那个数字. 但有的时候我们需要柱状图堆叠. 那如果我们需要所有数字都在外面,并且以 320/210/310/410/1320 这样的形式显示呢? 那么 echart ...
- ztree : checkbox 选中/不选中时动态添加/删除DOM元素
先上代码. var IDMark_Switch = "_switch", IDMark_Icon = "_ico", IDMark_Span = "_ ...
- SQL数据多条转单条(CONCAT_WS)
一.concat()函数可以连接一个或者多个字符串 concat(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. select conc ...