compair sql中的2个字符串[第一个字符串包含第二个字符串' s子字符串]

时间:2017-11-10 06:58:07

标签: java mysql sql sql-server

我正在分享一个与我的问题相关的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代码是做同样的事情。

2 个答案:

答案 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

根据您的意愿输入。

对于以下输入

Input

输出如下

Result

检查SQL Fiddle此处