我正在分享一个与我的问题相关的java代码,你可以很容易地理解我在SQL中看到的东西。
Java代码
String s1 = "http://hdvidz.co/video/file/Naa-Peru-Meenakshi-%7C-11th?id=rj5e--8vQb4";
String s2 = "Naa Peru Meenakshi";
String splitStringS2[] = s2.split(" ");// using blank space to split
int i = 0;
for (String a : splitStringS2) {
if (s1.contains(a)) {
i = i + 1;
} else {
System.out.println("break perform");
i = 0;
break;
}
}
System.out.println("value of i=== " + i);
我有2张桌子;表A有一列"链接"包含价值" http://hdvidz.co/video/file/Naa-Peru-Meenakshi-%7C-11th?id=rj5e--8vQb4&#34 ;;
表B有一列"名称"包含价值" Naa Peru Meenakshi"
CREATE TABLE `A` (`link` VARCHAR(255) );
insert into A values("http://hdvidz.co/video/file/Naa-Peru-Meenakshi-%7C-11th?id=rj5e--8vQb4");
CREATE TABLE `B`(`name` VARCHAR(255) );
insert into B values("Naa Peru Meenakshi");
现在到底想要什么
1)从表B中选择一个值并拆分为子串并存储在数组 splitName 中。
2)从表A和表中选择一个值。存储在变量 url
中3)现在检查子字符串( splitName )存在于变量 url
中4)如果在 url 中找到的所有子字符串都返回count(子字符串匹配),否则返回0
上面的java代码是做同样的事情。
答案 0 :(得分:0)
您可以编写存储过程。 我有一段时间没有使用MySQL,但我很确定它不支持分割功能。您可以像here中一样编写用户定义的过程。
我认为您也可以使用LOCATE来查找字符串中子字符串的位置。 更新:检查链接中的第二个答案。
答案 1 :(得分:0)
对于MS SQL Server请尝试以下查询:
WITH CTE
AS
(
SELECT
1 as Seq ,
COL ,
Val = COL
FROM T1
UNION ALL
SELECT
Seq = Seq+1,
COL = LTRIM(SUBSTRING(COL,CHARINDEX(' ',COL),LEN(COL))),
Val = LTRIM(RTRIM(SUBSTRING(COL,1,CHARINDEX(' ',COL))))
FROM CTE
WHERE ISNULL(Val,'')<>''
)
SELECT
Val = CASE WHEN ISNULL(Val,'')<>'' THEN Val
ELSE Col END
FROM CTE
WHERE Seq > 1
我假设您在表 T1 的 COL 列中包含这些值。您可以替换第一个选择查询
SELECT
1 as Seq ,
COL ,
Val = COL
FROM T1
根据您的意愿输入。
对于以下输入
输出如下
检查SQL Fiddle此处